1000以内的质数之和用C语言写出来谢谢啊

1000以内的质数之和用C语言写出来谢谢啊

给个专用来求大质数的思路——筛法。

#include "stdio.h"
#define N 1000
#define getisp(i) (a[(i)/8]>>((i)%8))&0x1
//用来取得第i个数是否质数标记,宏操起来比函数更快更省内存
#define setisp(i,j) j?(a[(i)/8]|=(0x1<<((i)%8))):(a[(i)/8]&=~(0x1<<((i)%8)))
//用来设置第i个数是否质数标记,宏操起来比函数更快更省内存

void main()
{
char a[N/8+1];
long i=1,j,n;
double sum=0.0;
FILE *pf;
a[0]=0x56;//第一个字节有2这个质数和1这个合数所以单独设置。(0x56)16=(01010110)2
while(i<N/8+1)
{
a[i]=0x55;
i++;
}
i=3;//从3开始
while(i*i<N)
{
j=i*i;
while(j<N)
{
if(getisp(j-1)) setisp(j-1,0);
j+=i;
}
do{i+=2;}while(!getisp(i-1));
}
i=1;
while(i<N)
{
if(getisp(i-1)) sum+=i;
i++;
}
printf("The sum of all prime in 1000 is: %0.0f",sum);
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2007-04-10
#include <stdio.h>
#include <math.h>

int isPrimer(int n)
{
int i;
if(n == 1)
return 0;
if(n == 2)
return 1;
if(n%2 == 0)
return 0;
else
{
int count =(int)sqrt(n)+1;
for(i=3;i<count;i+=2)
if(n%i == 0)
return 0;
}
return 1;

}
int main(void)
{
int n;
int i;
scanf("%d",&n);
for(i=2;i<=n;i++)
{
if(isPrimer(i))
{
printf("%d,",i);
}
}
return 0;
}
第2个回答  2007-04-10
我试过了没问题的
main()
{
int i,k,c;
c=1;
for (i=2;i<=1000;i++) /*设定范围1000以内*/
{
for(k=2;k<=i;k++) /*从1查到当前所判断的数*/
{
if (i%k==0 && k!=1 && i!=k) c=0; /*如果已经不满足素数条件,则将标志转0*/
}
if (c!=0)
printf("%d,",i);
c=1; /*初始化标志*/
}
}

1000以内的质数之和用C语言写出来谢谢啊
} printf("The sum of all prime in 1000 is: %0.0f",sum);}

1000内质数和?要解答过程!!!
if (c!=0)printf("%d,",i);c=1; \/*初始化标志*\/ } } 给个专用来求大质数的思路——筛法。include "stdio.h"define N 1000 define getisp(i) (a[(i)\/8]>>((i)%8))&0x1 \/\/用来取得第i个数是否质数标记,宏操起来比函数更快更省内存 define setisp(i,j) j?(a[(i)\/8]|...

编写程序求出100到1000范围内所有素数的和c语言
for(i=101;i<1000;i+=2)if(isprime(i))s+=i;printf("%d\\n",s);getch();return 0;}

C语言求助,求2--1000之间的素数和怎么做啊~?
首先用筛法得到所有质数,然后一次循环加起来就好了 由于你的数字很小,如果你不熟悉筛法,可以直接丛2开始循环到1000 每个数字都判断,是质数就加到和里,判断K是不是质数最简单的方法就是i从2到sqrt(k)循环,如果任何一个i满足有k%i==0,就不是质数,否则就是 ...

求一个用c语言编程的一个程序。让输出一1000以内的全部素数
1、主函数中进行循环,从2到1000 2、如果当前循环的数是素数,就将其输出 判断一个数num是否是素数,可按照以下流程:1、循环,从2到num-1 2、如果当前循环的数能被num整除,则num不是素数 3、没有num能整除的数,表明num是素数 代码如下:include <stdio.h> int isPrime(int num);int main(...

C语言编程求100—1000内的素数个数及和?
long sum=0; \/*sum存储素数累加和,由于其和超过2^15-1,所以必须用长整形*\/ for(i=100;i<=1000;i++){ for(k=2;k<=sqrt(i) && i%k!=0;k++); \/*这一步是超简结写法,直接将if判断写入for判断语句中*\/ if(k>sqrt(i)){ \/*如果k>sqrt(i),说明上面的循环条件都不满足,...

C语言程序:1000以内的最大的20个素数之和
一个素数是指只能被1和自身整除的正整数,例如2,3,5,7等。为了找出1000以内的最大的20个素数,我们可以从999开始递减地检查每个奇数是否是素数,直到找到20个为止。然后我们把这20个素数相加得到和。下面是一个可能的C语言程序:include <stdio.h>#include <math.h>\/\/ 判断一个正整数是否是素数...

求写一个C语言程序,1000以内素数最大十个素数求和
include "stdio.h"int main(int argv,char *argc[]){int n,i,j,k;printf("The results are as follows:\\n");for(n=1,i=999;n<11;i-=2){for(j=3;(k=j*j)<=i;j+=2)if(i%j==0)break;if(k>i){printf("%4d",i);n++;}}printf("\\n");return 0;}运行结果:

C语言输出100到一千之间所有素数
首先打开CodeBlocks,创建一个新项目。项目语言,选择“c”,就可以写程序判断素数了,具体方法为:1、创建好项目后,我们打开“main.c”文件。2、首先是实现输入口。3、输入口完成后,接下来就是判断素数。4、先定义好相关的变量,这里result是用来存储因子之和的,用循环,遍历所有可能因子。5、执行...

C语言求质数之和
{ int i,sum=2;if(n<2)return 0;else if(n==2)return 2;else { for(i=3;i<=n;i+=2){ sum+=IsPrime(i)?i:0;} return sum;} } main(){ int n;printf("输入一个最大数:\\n");scanf("%d",&n);printf("比%d小的所有质数之和SUM=%d\\n",n,Sum(n));getchar();} ...

相似回答
大家正在搜