第1个回答 推荐于2017-12-16
#include <stdio.h>
int isPrime(int n) //求
素数,这是最经典的算法代码。建议记住
{
int i;
for(i=2;i*i<=n;i++)
if(n%i==0)
return 0;
return 1;
}
int main()
{
int i,sum=0;
for(i=2;i<100;i++)
if( isPrime(i))
sum+=i;
printf("%5d",sum);
return 0 ;
}
本回答被提问者和网友采纳
第2个回答 2014-03-07
你的代码很乱 而且完全有逻辑错误,即你的代码判断素数是有问题的。我帮你写了一个完整的逻辑清新的小代码,希望帮到你。
#include <stdio.h>
#include <math.h>
#include <assert.h>
bool IsPrimeNumber(int num)//判断num是否为素数,是的话返回true,否则返回false
{
assert(num >= 1);
if(num == 1)
return false;
else
{
for(int i = 2; i <= sqrt(double(num)); i++)
if(num % i == 0)
return false;
}
return true;
}
int main()
{
for(int start = 2, finish = 100; start <= finish; start++)//判断区间[start,finish]的数是否为素数,是则输出。
if(IsPrimeNumber(start))
printf("%d\t", start);
printf("\n");
return 0;
}
第3个回答 2012-04-11
最有效率的方法:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define N 100
int main()
{
int prime[N] = {2}, prime_n = 1;
int i, j, bound, sum = 0;
for (i = 2; i <= N; i++)
{
bound = (int)sqrt(i);
for (j = 0; prime[j] <= bound; j++)
if (i % prime[j] == 0)
break;
if (prime[j] > bound)
sum += (prime[prime_n++] = i);
}
printf("Sum = %d\n", sum);
return 0;
}
第4个回答 2014-03-07
void main()
{
bool tag=false;
for(int a=2;a<=100;++a)
{
for(int b=2;b<a;++b)
{
if(a%b==0)
{
tag=true;
break;
}
}
if(!tag)
{
cout<<"prime "<<a<<endl;
}
tag=false;
}
system("pause");
}