c语言统计10个数中素数个数(C语言找素数并统计个数)
素数也叫质数,检验一个数是否为素数的最快方法:就是用不大于这个数的平方根的所有素数试除,如果有一个能整除,它就是合数;如果都不能整除,它就是素数,程序如下:,今天小编就来说说关于c语言统计10个数中素数个数?下面更多详细答案一起来看看吧!
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;
}
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com