c語言統計10個數中素數個數?素數也叫質數,檢驗一個數是否為素數的最快方法:就是用不大于這個數的平方根的所有素數試除,如果有一個能整除,它就是合數;如果都不能整除,它就是素數,程序如下:,今天小編就來說說關于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;
}
,