一道C语言题不太理解,求解析

/*--------------------------------
功能:求给定正整数m以内的素数之和。
例如:m=20时,函数值为77.
要求:用for循环实现。
----------------------------------*/

#include<stdio.h>
int fun(int m)
{
/*******************/
int i,k,s=0;
for(i=2;i<=m;i++)
{
for(k=2;k<i;k++)
if(i%k==0) break;
if(k==i)s+=i;

}
return s;
/*******************/
}

main()
{
int y;
y=fun(20);
printf("y=%d\n",y);
system("pause");
}

在定义fun函数的循环部分,我不理解 。

//初始化记录素数和的变量s为0
int i,k,s=0;
//从2开始(1不是素数),一直循环到给定的数,检测每个数是否为素数
for(i=2;i<=m;i++) { //把被检测数用从2起一直到比被检测数小1的数去整除,只要能被整除,就跳出循环
for(k=2;k<i;k++) {
if(i%k==0) break;
}
//如果k==i,说明上面循环不是中途退出的,被检测数除了1和本身没有约数,是个素数,累加到s上
if(k==i)s+=i;}
//所有数循环结束后,s变量保存的就是所有素数的和。
return s;
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-12-30
/*******************/ int i,k,s=0; for(i=2;i<=m;i++) { for(k=2;k<i;k++) if(i%k==0) break;//如果i能被k整除,则i不是素数(因为素数只能被1和本身整除),跳出循环 if(k==i)s+=i; } return s;
相似回答