- 相關(guān)推薦
C語(yǔ)言可逆素?cái)?shù)教程
引導(dǎo)語(yǔ):可逆素?cái)?shù)是一個(gè)素?cái)?shù)將其各位數(shù)字的順序倒過(guò)來(lái)構(gòu)成的反序數(shù)也是素?cái)?shù)。以下是百分網(wǎng)小編分享給大家的C語(yǔ)言可逆素?cái)?shù)教程,歡迎參考學(xué)習(xí)!
求四位的可逆素?cái)?shù)?赡嫠?cái)?shù)指:一個(gè)素?cái)?shù)將其各位數(shù)字的順序倒過(guò)來(lái)構(gòu)成的反序數(shù)也是素?cái)?shù)。
*問(wèn)題分析與算法設(shè)計(jì)
本題的重點(diǎn)不是判斷素?cái)?shù)的方法,而是求一個(gè)整數(shù)的反序數(shù)。求反序數(shù)的方法是從整數(shù)的末尾依次截取最后一位數(shù)字,每截取一次后整數(shù)縮小10倍,將截取的數(shù)字作為新的整數(shù)的最后一位(新的整數(shù)擴(kuò)大10倍后加上被截取的數(shù)字)。這樣原來(lái)的整數(shù)的數(shù)字從低到高被不斷地截取,依次作為新的整數(shù)從高到低的各位數(shù)字。
*程序說(shuō)明與注釋
#include
#include
int num(int number);
int ok(int number);
int main()
{
int i,count;
printf("There are invertable primes with 4 digits: \n");
for(count=0,i=1001;i<9999;i+=2) //窮舉全部的奇數(shù)
{
if(num(i)) //若是可逆素?cái)?shù),則輸出
printf(count%9 ? "%3d:%d" : "%3d:%d\n",++count,i);
}
return 0;
}
int num(int number)
{
int i,j;
if(!ok(number))return 0; //判斷是否為素?cái)?shù)
for(i=number,j=0;i>0;i/=10) //按位將整數(shù)倒過(guò)來(lái),產(chǎn)生反序數(shù)
{
j=j*10 + i%10;
}
if(number
{
if(!ok(i)) //判斷對(duì)應(yīng)的反序數(shù)是否為可逆素?cái)?shù)
{
return 0;
}
else
{
return 1; //若是可逆數(shù)素?cái)?shù),則返回1
}
}
else
{
return 0;
}
getchar();
return 0;
}
int ok(int number)
{
int i,j;
if(number%2 ==0) //判斷是否為素?cái)?shù)
return 0;
j= sqrt((double)number) +1 ; //取整數(shù)的平方根為判斷的上限
for(i=3;i
{
if(number %i ==0) //若為素?cái)?shù)則返回1,否則返回0
return 0;
}
return 1;
}
*思考題
求1000以?xún)?nèi)的孿生素?cái)?shù)。孿生素?cái)?shù)是指:若a為素?cái)?shù),且a+2也是素?cái)?shù),則素?cái)?shù)a和a+2稱(chēng)為孿生素?cái)?shù)。
【C語(yǔ)言可逆素?cái)?shù)教程】相關(guān)文章:
C語(yǔ)言函數(shù)遞歸教程09-25
如何實(shí)現(xiàn)C語(yǔ)言畫(huà)圖教程08-08
C語(yǔ)言學(xué)習(xí)中的指針用法教程08-25
C語(yǔ)言和C++的分別06-18
C語(yǔ)言的結(jié)構(gòu)10-14
C語(yǔ)言考點(diǎn)精選06-29
C語(yǔ)言的應(yīng)用05-29
C語(yǔ)言試題08-02
什么是C語(yǔ)言07-27