C趣味程序百例(09)求素?cái)?shù)

字號:

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