c语言求素数个数

Python013

c语言求素数个数,第1张

原代码写的很不错,以下是按你要求改的,辛苦打来,望采纳,谢谢!

#include <stdio.h>

#include<time.h>

#include<stdlib.h>

#include<math.h> 

int prime(int x)

{

int i,n 

for(i=2i<=(int)sqrt(x)i++)if(x%i==0)return 0 

return 1

}

void main()

int n=0,i=0,j=0

char counter=1

int sum=0

srand(time(0))

n=rand()%100+1/*随机函数*/

printf("产生的随机数为%d\n",n)

printf("不大于%d的素数序列如下\n",n) 

if(n>2)

printf("%4d",2)

j++

for(i=3i<=ni+=2) 

{

if(prime(i)==1)

printf("%4d",i)

counter++

sum+=i

if(j!=0 && ++j%10==0) 

{

printf("\n") 

}

}

}

printf("\n") 

printf("序列中素数的个数为%d\n",counter)

printf("序列中素数的平均值为%0.4f\n",(float)sum/(float)counter)

}

如果一个数是素数,只要判断他是否能被2到这个数的开方之间的数整除就行了。

int flag=0

if(m==2){ //先判断是不是2

flag=1

}

else{

for(int i=2i<=sqrt(m)i++){

flag=1

if(m%i==0){ //不是素数

flag=0

break

}

}

}

return  (flag==1)?m:-1//判断是否为1,为1输出m,否则输出-1 ,-1表示不是素数

如果是求某个范围的素数,可以连续调用这个方法,上面是常规的方法,还有更好的方法自己去查一下。