从键盘任意输入任意一个整数n(n>1),编程计算并输出1~n之间的所有素数之和S?

从键盘任意输入任意一个整数n(n>1),编程计算并输出1~n之间的所有素数之和S。
要求:判断素数和求和分别使用两个子函数(isprime()、sum1())实现

#include<stdio.h>

int main()

{

int n,i,j,t,l;

int sum=0;

printf("请输入一个大于2的整数:");

scanf("%d",&n);

l=n;

for(;n>=2;n--)

{

for(i=2;i<n;i++)

{

if(n%i!=0)//判断其为素数

t=1;    

else

{

t=2; 

break;

}

}

if(t==1)

{

sum+=n;

//printf("%d ",n);//输出1-n之间的所有素数

}

}

printf("1-%d之间的所有素数和为:%d\n",l,sum); 

return 0;

}

运行结果:

扩展资料:

printf()函数的调用格式为: printf("<格式化字符串>", <参量表>)。

其中格式化字符串包括两部分内容:一部分是正常字符,这些字符将按原样输出; 另一部分是格式化规定字符,以"%"开始,后跟一个或几个规定字符,用来确定输出内容格式。

参量表是需要输出的一系列参数,其个数必须与格式化字符串所说明的输出参数个数一样多, 各参数之间用","分开, 且顺序一一对应,否则将会出现意想不到的错误。

比如:

int a=1234;

printf("a=%d\n",a); 

输出结果为a=1234。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-05-22
//要用子函数求和的话,就要用到vector了,应该是可以不用子函数求和的
#include <iostream>
#include <vector>
using namespace std;

bool isprime(int n)
{
for (int i = 2; i <= (int)(n / 2); i++)
{
if (n % i == 0)
{
return false;
}
}

return true;
}

int sum1(vector<int> &arr)
{
int length = arr.size();
int result = 0;
for (int i = 0; i < length; i++)
{
result += arr[i];
}

return result;
}

int main(void)
{
int num;
cout << "请输入一个整数:";
cin >> num;
vector<int> arr;

for (int i = 2; i < num; i++)
{
if (isprime(i))
{
arr.push_back(i);
}
}

int sum = sum1(arr);
cout << "结果是" << sum << endl;

return 0;
}
相似回答