请编写一个函数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的值是否为素数。