C语言编程求解1到n之间所有素数之和

输入由键盘输入,只有1行,这一行只有一个正整数n,代表需要计算1到n之间所有素数之和;输出共1行,这一行只有一个整数,代表1~n之间所有素数之和;保证100%数据,1<=n<=100000;请使用函数实现素数判定,定义函数原型:int isprime(int k)。
跪谢大神们啦!!

第1个回答  2014-03-28
#include<stdio.h>
#include<math.h>

int isPrime(int n)   ///是素数返回1,否则返回0
{
int i,k;
k = (int)sqrt(n);
for(i = 2; i <= k;i++)
{
     if(n % i == 0)   
        break;
}
if(i > k)
      return 1;
else
       return 0;
}

void main()
{
   int n,i,k,sum=0;
   printf("输入大于等于1的整数:n\n");
   scanf("%d",&n);
for(i=1;i<=n;i++)
{
 if (isPrime(i)==1)
 {
  sum+=i;
 }
}
printf("%d",sum);
}

追问

系统显示错误答案。。

追答

我晕,什么系统?那些printf的都是给人看的,你要用到验证系统,就需要将那些东西去掉。

第2个回答  推荐于2018-11-11
#include<stdio.h>

int isprime(int k)
{
int i;
for(i=2;i*i<=k;i++)//这个比较简单通过i*i<=k 来求k的开方i
//2*4=8, 只要判断2和3就可以判断他是否为素数,因为判断了2是否为因素就知道8/2=4为8的/
/////因/素
{
if(k%i==0)
return 0;
}
return 1;
}

int main()
{
int i, n, sum=0;
scanf("%d", &n);
for(i=2;i<=n;i++)
{
if(isprime(i))
sum+=i;
}
printf("%d", sum);
return 0;
}本回答被提问者和网友采纳
第3个回答  2014-03-28
返回bool比较方便吧
bool isprime(int k){
int j,i=k/2;
for(j=2;j<=i ; j++)
if(k%j==0)
return false;
return true;
}
相似回答