请编写一个函数int fun(int n),其中n为自然数。函数fun()的功能是求出自然数n(包括n)以内所有素数的和,并返回其值。 注意;部分源程序已存在文件PROC11.cpp中。 请勿修改主函数和其他函数中的任何内容,仅在函数fun()的花括号中填写若干语句。 文件PROC11.cpp的内容如下: //PROC11.cpp #include<iostream> using namespace std; int fun(int n); int main() { int number; cout<<"Enter the number which you want to caculate: \n"; cin>>number; cout<<"The result is:"<<fun(number)<<end1; return 0; } int fun(int n) { //* * * * * * * * * }
参考答案:
解析:函数fun()的定义如下: int fun(int n) { int i,j,sum=0; for(j=2;j<n;j++) { for(i=2;i<=i;i++) { if(j%i==0) break; } if(i==j) { sum+=j; } } } 所谓素数就是其约数只有1和其本身的自然数。因为除2以外的素数都是奇数,所以只需要对奇数进行判断即可。可以采用一个双重循环结构,通过外循环的控制变量i每次向内循环提供一个奇数,让内循环进行判断。根据素数的定义,内循环的控制变量i的初值为2,终值为外循环的控制变量i的平方根,步长为1。在内循环中判断i能否被j整除。如果i能被j整除,则表明i不是素数,就退出内循环,将控制转移到内循环的后继语句:如果循环能正常结束,表明除了1和其本身没有其他约数,因此,i是一个素数。利用循环正常结束时它的循环控制变量的值总是超出(大于或小于)循环终值的特性,在内循环的外面判断内循环的控制变量j是否大于内循环的终值,就能确定i的值是否为素数。