30.求素數(shù)
求素數(shù)表中1~1000之間的所有素數(shù)
*問題分析與算法設(shè)計
素數(shù)就是僅能衩1和它自身整除的整數(shù)。判定一個整數(shù)n是否為素數(shù)就是要判定整數(shù)n能否被除1和它自身之外的任意整數(shù)整除,若都不能整除,則n為素數(shù)。
程序設(shè)計時i可以從2開始,到該整數(shù)n的1/2為止,用i依次去除需要判定的整數(shù),只要存在可以整除該數(shù)的情況,即可確定要判斷的整數(shù)不是素數(shù),否則是素數(shù)。
*程序與程序注釋
#include
void main()
{
int n1,nm,i,j,flag,count=0;
do{
printf("Input START and END=?");
scanf("%d%d",&n1,&nm); /*輸入求素數(shù)的范圍*/
}while(!(n1>0&&n1 printf("...........PRIME TABLE(%d--%d)............\n",n1,nm);
if(n1==1||n1==2) /*處理素數(shù)2*/
{
printf("%4d",2);
n1=3;count++;
}
for(i=n1;i<=nm;i++) /*判定指定范圍內(nèi)的整數(shù)是否為素數(shù)*/
{
if(!(i%2))continue;
for(flag=1,j=3;flag&&j /*判定能否被從3到整數(shù)的一半中的某一數(shù)所整除*/
if(!(i%j))flag=0; /*若能整除則不是素數(shù)*/
if(flag) printf(++count%15?"%4d":"%4d\n",i);
}
}
*運(yùn)行結(jié)果
Input START and END=?1 1000
求素數(shù)表中1~1000之間的所有素數(shù)
*問題分析與算法設(shè)計
素數(shù)就是僅能衩1和它自身整除的整數(shù)。判定一個整數(shù)n是否為素數(shù)就是要判定整數(shù)n能否被除1和它自身之外的任意整數(shù)整除,若都不能整除,則n為素數(shù)。
程序設(shè)計時i可以從2開始,到該整數(shù)n的1/2為止,用i依次去除需要判定的整數(shù),只要存在可以整除該數(shù)的情況,即可確定要判斷的整數(shù)不是素數(shù),否則是素數(shù)。
*程序與程序注釋
#include
void main()
{
int n1,nm,i,j,flag,count=0;
do{
printf("Input START and END=?");
scanf("%d%d",&n1,&nm); /*輸入求素數(shù)的范圍*/
}while(!(n1>0&&n1
if(n1==1||n1==2) /*處理素數(shù)2*/
{
printf("%4d",2);
n1=3;count++;
}
for(i=n1;i<=nm;i++) /*判定指定范圍內(nèi)的整數(shù)是否為素數(shù)*/
{
if(!(i%2))continue;
for(flag=1,j=3;flag&&j /*判定能否被從3到整數(shù)的一半中的某一數(shù)所整除*/
if(!(i%j))flag=0; /*若能整除則不是素數(shù)*/
if(flag) printf(++count%15?"%4d":"%4d\n",i);
}
}
*運(yùn)行結(jié)果
Input START and END=?1 1000

