C语言200到300的素数之和

划N-S图写程序

第1个回答  2012-03-26
#include<stdio.h>
#include<conio.h>
int main(){
int i,j;
char num[301];
//初始化
memset(num,1,301);
num[0]=0;
num[1]=0;
//筛选法
for(i=2;i<300;++i){
if(num[i]==0) continue;
for(j=i<<1;j<=300;j+=i)
num[j]=0;
}
//求和
int sum=0;
for(i=200;i<=300;++i){
if(num[i]==1)
sum+=i;
}
printf("%d",sum);
getch();
}

流程图你看我这程序应该很明白了吧,只有中间的四个模块,开始-初始化-筛选-求和-输出-结束追问

能就回答一个答案吗?200-300所有素数之和,划N-S图写程序

追答

额。。我这在上班呢。。没那么多时间啊,不好意思啊。你这应该是老师布置的题目吧,你自己锻炼下应该还是比较好吧O(∩_∩)O~

追问

哪你帮我看下下面的回答是对的吗?

追答

下面的计算出来肯定是对的,而且流程也很清楚,就是算法效率不高,重复计算的比较多。我写了这么多次质数相关的问题,还是筛选法比较好O(∩_∩)O~

追问

谢谢

第2个回答  2012-03-26
#include<stdio.h>
int fun(int m)
{
int i;
if(m<2) return 0;
for(i=2;i<=m/2;i++)
if(m%i==0) return 0;
return 1;
}
void main( )
{
int n=0,i;
for(i=200;i<=300;i++)
if(fun(i))
n+=i;
printf("sum=%d\n",n);
}追问

确定是对的吗?

追答

肯定对,测试过的。

本回答被提问者采纳