【发布时间】:2019-02-05 12:58:25
【问题描述】:
我想打印前 1000 个素数的总和。不知道下面的实现对不对,错在哪里。此外,我如何优化这个实现,这是额外的课程所必需的?
#include<stdio.h>
#include<math.h>
int prime(int no,int lim)
{
int i=2,flag=0;
for(;i<=lim;i++)
{
if(no%i==0)
{
flag=1;
}
}
return flag ;
}
int main()
{
int i=4,count=2,j,k,l,n=4;
double sum=5.0;
for(;count<=1000;)
{
j=sqrt(i);
k=prime(i,j);
if(k==0)
{
//printf("\n%d",i);
sum+=(double)i;
//for(l=0;l<100000;l++);//just to reduce speed of the program
count++;
}
i++;
}
printf("\n%f",sum);
return 0;
}
【问题讨论】:
-
如果你进行谷歌搜索,你会发现多个处理素数的 C 程序示例。例如看到这个讨论quora.com/…
-
这里有几个缺陷:count 和 i 不相等;我认为,如果您的数字是偶数,prime() 将返回错误的值。你的输出是什么?
标签: c