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

