c语言mn回文素数编程,C语言求回文素数
問(wèn)題描述
所謂回文素?cái)?shù)指的是,對(duì)一個(gè)整數(shù)n從左向右和從右向左讀其數(shù)值都相同且n為素?cái)?shù),則稱整數(shù)為回文素?cái)?shù)。
對(duì)于偶數(shù)位的整數(shù),除了11以外,都不存在回文素?cái)?shù)。即所有的4位整數(shù)、6位整數(shù)、 8位整數(shù)…都不存在回文素?cái)?shù)。下面列出兩位和三位整數(shù)中包含的所有回文素?cái)?shù)。
兩位回文素?cái)?shù):11
三位回文素?cái)?shù):101、131、151、181、191、313、353、373、383、727、757、787、 797、 919、 929
本題要求解的問(wèn)題是:求出所有不超過(guò)1000的回文素?cái)?shù)。
問(wèn)題分析
本題要使用判斷素?cái)?shù)的方法,并且要解決如何求一個(gè)整數(shù)的回文數(shù)。
采用的方法是窮舉法。對(duì)1000以內(nèi)的每一個(gè)整數(shù)n進(jìn)行考察,判斷n是否為回文數(shù)。如果n是回文數(shù),再判斷它是否為素?cái)?shù),對(duì)于既是回文數(shù)也是素?cái)?shù)的整數(shù)n,就是要求的回文素?cái)?shù),將其打印輸出即可。
由于題目要求解的是所有不超過(guò)1000的回文素?cái)?shù),因此最后的結(jié)果中應(yīng)該包含兩位和三位的回文數(shù)。
采用窮舉法來(lái)構(gòu)造一個(gè)整數(shù)并求與其對(duì)應(yīng)的反序數(shù),若整數(shù)與其反序數(shù)相等,則該整數(shù)是回文數(shù)。
算法設(shè)計(jì)
在問(wèn)題分析中己經(jīng)確定要采用窮舉法逐一考察1000以內(nèi)的每個(gè)整數(shù),因此本題的算法設(shè)計(jì)可以釆用循環(huán)結(jié)構(gòu)來(lái)完成。
通過(guò)三重循環(huán)來(lái)遍歷所有1000以內(nèi)的整數(shù)。用三個(gè)循環(huán)變量來(lái)構(gòu)造整數(shù)n,同時(shí),這三個(gè)循環(huán)變量反序便可以構(gòu)造出n的反序數(shù)m。其中,特別要注意的是如果n的個(gè)位為0,接下來(lái)要做的就是比較m和n的值是否相等,如果相等,則表明整數(shù)n是回文數(shù)。再來(lái)判斷n是否是素?cái)?shù),如果n同時(shí)也為素?cái)?shù),則n為回文素?cái)?shù),將其打印出來(lái)即可。
下面是完整的代碼:
#include
int fun(int n);
int main()
{
int i, j, k, n, m;
printf("不超過(guò)1000的回文數(shù):\n");
for(i=0; i<=9; ++i) /*窮舉第一位*/
for(j=0; j<=9; ++j) /*窮舉第二位*/
for(k=0; k<=9; ++k) /*窮舉第三位*/
{
n=i*100+j*10+k; /*計(jì)算組成的整數(shù)*/
m=k*100+j*10+i; /*計(jì)算對(duì)應(yīng)的反序數(shù)*/
if(i==0 && j==0) /*處理整數(shù)的前兩位為0的情況*/
{
m=m/100;
}
else if(i==0) /*處理整數(shù)的第一位為0的情況*/
{
m=m/10;
}
if(n>10 && n==m && fun(n)) /*若大于10且為回文素?cái)?shù),則輸出*/
{
printf("%d\t", n);
}
}
printf("\n");
return 0;
}
/*判斷參數(shù)n是否為素?cái)?shù)*/
int fun(int n)
{
int i;
for(i=2; i
{
if(n%i == 0)
return 0;
}
return 1;
}
運(yùn)行結(jié)果:
不超過(guò)1000的回文數(shù):
11 101 131 151 181 191 313 353 373 383 727 757 787 797 919 929
總結(jié)
以上是生活随笔為你收集整理的c语言mn回文素数编程,C语言求回文素数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Python量化交易05——基于多因子选
- 下一篇: 华为机试HJ63:DNA序列