快樂素數判斷及按要求輸出。

2021-10-01 17:00:10 字數 4053 閱讀 8958

題目描述

對於乙個數大於1的整數n,把它的各個位的數求平方和,然後得到乙個數,再把這個數的各個位再求平方和,一直這麼做下去,如果最後得到的數是1,那麼我們就稱n是乙個快樂數,否則n就不是乙個快樂數。而不快樂數則會在計算中陷入無限迴圈(本題假定經過1000步計算後,依然不能得到1,則該數為不快樂數)。

如果乙個數既是快樂數,又是素數,那我們就稱這樣的數是快樂素數。

以數字7為例分析7是不是快樂素數。數字7是乙個素數,但是它是快樂數嗎?

7-7*7=49

49-4*4+9*9=97

97-9*9+7*7=130

130→1*1+3*3=10

10→1*1=1

所以它是快樂數。

對於這個問題,請編寫程式判斷乙個正整數是不是快樂素數。
* 注:素數是指在大於1的自然數中,除了1和它本身以外不再有其他因數的自然數。*
時間限制:10s 空間限制:1000k

輸入描述:

n本題輸入樣例已確保n為(1,100] 區間內的乙個自然數。

輸出描述:

如果n是快樂素數,輸出計算過程(相鄰2個數字之間有1個空格,最後乙個數字的後面無空格);如果n不是快樂素數,輸出no前3步計算的結果序列(詳見樣例|2和樣例3,相鄰2個資料之間有1個空格,最後1個數字的後面無|空格,測試樣例能夠保證至少有3步)。

示例如下:

輸入:

樣例1:輸入:7

樣例2:輸入:11

樣例3:輸入:76

輸出:樣例1:輸出:7 49 97 130 10 1

樣例2:輸出:no 11 2 4 16

樣例3:輸出:no 76 85 89 145

源**
#include

void

kabunka

(int n)}if

(count==1)

//說明n不是素數,那也不可能是快樂素數。

if(count1==1)

//1位

if(count2==1)

printf

("%d"

,n2t*n2t)

;else

if(count2==2)

printf

("%d",(

(n2t%10)

*(n2t%10)

+(n2t/10)

*(n2t/10)

));else

if(count2==3)

printf

("%d",(

(n2t%10)

*(n2t%10)

+(n2t/10%

10)*(n2t/10%

10)+(n2t/

100)

*(n2t/

100)))

;}else

if(count1==2)

//2位

if(count2==1)

printf

("%d"

,n2t*n2t)

;else

if(count2==2)

printf

("%d",(

(n2t%10)

*(n2t%10)

+(n2t/10)

*(n2t/10)

));else

if(count2==3)

printf

("%d",(

(n2t%10)

*(n2t%10)

+(n2t/10%

10)*(n2t/10%

10)+(n2t/

100)

*(n2t/

100)))

;}else

if(count1==3)

//3位

if(count2==1)

printf

("%d"

,n2t*n2t)

;else

if(count2==2)

printf

("%d",(

(n2t%10)

*(n2t%10)

+(n2t/10)

*(n2t/10)

));else

if(count2==3)

printf

("%d",(

(n2t%10)

*(n2t%10)

+(n2t/10%

10)*(n2t/10%

10)+(n2t/

100)

*(n2t/

100)))

;}}}

if(count==0)

//說明n是乙個素數,但不一定是個快樂素數。

n=sum;

count3++;}

//進**況統計

if(count3>=

1000

&&sum!=1)

//是素數但不是快樂素數

/*同最上方一致*/

if(count1==1)

if(count2==1)

printf

("%d"

,n2t*n2t)

;else

if(count2==2)

printf

("%d",(

(n2t%10)

*(n2t%10)

+(n2t/10)

*(n2t/10)

));else

if(count2==3)

printf

("%d",(

(n2t%10)

*(n2t%10)

+(n2t/10%

10)*(n2t/10%

10)+(n2t/

100)

*(n2t/

100)))

;}else

if(count1==2)

if(count2==1)

printf

("%d"

,n2t*n2t)

;else

if(count2==2)

printf

("%d",(

(n2t%10)

*(n2t%10)

+(n2t/10)

*(n2t/10)

));else

if(count2==3)

printf

("%d",(

(n2t%10)

*(n2t%10)

+(n2t/10%

10)*(n2t/10%

10)+(n2t/

100)

*(n2t/

100)))

;}else

if(count1==3)

if(count2==1)

printf

("%d"

,n2t*n2t)

;else

if(count2==2)

printf

("%d",(

(n2t%10)

*(n2t%10)

+(n2t/10)

*(n2t/10)

));else

if(count2==3)

printf

("%d",(

(n2t%10)

*(n2t%10)

+(n2t/10%

10)*(n2t/10%

10)+(n2t/

100)

*(n2t/

100)))

;}}if

(sum==1)

//是快樂素數

if(sum1!=1)

printf

("%d "

,sum1)

; ntk=sum1;

sum1=0;

}printf

("1");

}}}int

main()

還是很可惜,這一次沒有成功過上機考試,只通過部分樣例。

後來回宿舍終於敲了出來,但是這個**也略顯複雜。

就拿這一次的題來作我第一篇csdn的文章吧。

字元按要求輸出Java

題目描述 編寫乙個函式,將字串中的每個單詞的倒序輸出,字串中以空格分割各個單詞,如果碰到數字則跳過。介面設計及說明 public void vconvertmsg string sinputstr,stringbuffer outputstr 輸入 string 輸出string 樣例輸入 he i...

判斷素數 輸出素數以及對稱素數 C

1 判斷輸入是否是素數或者對稱素數。include include include using namespace std isprime 函式用來判斷乙個數是否是素數 bool isprime int int main int argc,char argv return true 2 輸出一定範圍...

素數判斷及篩法

單個素數判斷 素數判斷 小資料 int prime int n miller rabin 大素數判定 單個數字n複雜度15 log n int mr 30 此陣列為測試用的a,這12個可測所有的long long int lli miller rabin lli n if x 1 return fa...