素数也叫质数,检验一个数是否为素数的最快方法:就是用不大于这个数的平方根的所有素数试除,如果有一个能整除,它就是合数;如果都不能整除,它就是素数,程序如下:,今天小编就来说说关于c语言统计10个数中素数个数?下面更多详细答案一起来看看吧!

c语言统计10个数中素数个数(C语言找素数并统计个数)

c语言统计10个数中素数个数

素数也叫质数,检验一个数是否为素数的最快方法:就是用不大于这个数的平方根的所有素数试除,如果有一个能整除,它就是合数;如果都不能整除,它就是素数,程序如下:

//找区间[m,n]上的素数并统计个数

#include <stdio.h> /*包含输入输出函数*/

#include <math.h> /*包含数学函数*/

main () /*主函数*/

{ //先找小于2^31的平方根的素数并存入数组z[]中:

int z[4793]={2}; //2是第一个素数。因46349以内共有素数4793个,且46349已经大于2^31的平方根

int i,x,g=0,q; //循环变量i,数组下标x,素数个数g,整数i的算术平方根q

for(i=3;i<=46349;i =2) //因大于2的偶数一定不是素数

{ x=0; q=sqrt(i); //每次都从z[0]开始检验

while (i%z[x] !=0) //如i不能被z[x]整除,用下一个素数检验

{ if(z[x]<=q) x ; //i不是素数时:用数组中的下一个素数检验

else //如z[x]>q),则i是素数,此时:

{ g ;z[g]=i; //素数个数g加1,保存该素数,

break; //退出内循环(检验下一个整数)

}

}

}

//再找闭区间[m,n]上的素数:

int m,n; //整数范围[m,n] (其中m,n为自然数,且m<=n<2^31)

printf("请输入整数范围[m,n], (m n之间用空格隔开隔开):"); scanf("%d %d",&m,&n);

g=0;//素数总个数g置0

if(m<=2) { printf("2 "); m=3; g ; }

if(m%2==0) m ; //使m从奇数开始

for(i=m;i<=n;i =2) //因大于2的偶数一定不是素数

{ x=0;q=sqrt(i); //每次都从第一个素数z[0]开始检验

while (i%z[x] !=0) //如i不能被z[x]整除,用下一个素数检验

{ if(z[x]<=q) x ; //i不是素数时:用数组中的下一个素数检验

else //如z[x]>q,则i是素数,此时:

{ g ; //素数个数g加1

printf("%d ",i); //输出该素数

break; //退出内循环(检验下一个整数)

}

}

}

printf("\n所找闭区间上共有素数:%d个",g);

return 0;

}

,