一个C语言编程题,求3~100内的所有素数和
C语言如下(用的筛法):
#include <stdio.h>
#include <stdbool.h>
#include <math.h>
const int n = 100;
void main(){
bool a[n];
int i, j, s;
for(i=0; i<n; i++) a[i]=true;
a[0] = false;
for(i=0; i<sqrt(n); i++) if(a[i]) for(j=2*i+1; j<n; j+=i+1) a[j]=false;
for(i=2, s=0; i<n; i++) if(a[i]) s+=i+1;
printf("sum=%d",s);
}
结果是:
sum=1058
printf("1058\n");//暴力打表,O(1)
#include <stdio.h>
#include <stdlib.h>
#define max 100
int main(int argc, char const *argv[])
{
int sum = 0;
for (int i = 3; i < max; i++)
{
sum += i * isPrime(i);
}
printf("%d",sum);
}
int isPrime(int n)
{
for (int i = 2; i < n; i++)
{
if (n % i == 0)
return 0;
}
// printf("%d\n",n);
return 1;
}
有帮助望采纳
a boolean=true;
b=0;
for i in range(3,101):
for q in range(2,i):
if i%q==0:
a=false
if a==true:
b=b+i
print(b)
代码不知道对不对,思路是这样,好久没用过python了
#include <stdio.h>
int main(int argc,char *argv[]){
int i,s,j;
for(s=0,i=3;i<100;i+=2){//遍历3~100间的奇数
for(j=3;j*j<=i;j+=2)//用3~i的平方根的整数除i
if(i%j==0)//有整除情况则不是素数
break;
if(j*j>i)//是素数则将其累加到s
s+=i;
}
printf("3~100内的所有素数和: %d\n",s);//输出结果
return 0;
}
一个一个的加