演算法15 數論4 自守數

2022-05-23 05:27:08 字數 2382 閱讀 7464

如果乙個正整數的平方的末尾幾位數等於這個數本身,那麼這個數便稱為自守數。

自守數有如下的一些性質

(1) 以自守數為後幾位的兩數相乘,結果的後幾位仍是自守數;

(2) n+1位的自守數出自n為的自守數。

(3) 兩個n位子守數的和等於10的n次方加1.

我們給出兩種自守數的演算法

1/*2

題目:自守數

3author taoliu——alex 2016.1045

主要實現:

6判斷自守數;78

*/91011 #include 12 #include 13

14int digit(long

n)15

24return count-1;25

}2627/*

28這是一種最為直觀的方法求自手術,但是這樣也會存在一定的問題,就是當n比較大的時候

29要求n的平方,結果就會非常的大,印象計算速度,另一方面也容易造成資料範圍溢位。

30*/

31int zishoushu1(long

n)32

39else

40return0;

41}4243

/*44

45在這裡我們採用另一種方法來求,我們只需要知道後面的即為,但是在乘法計算中

46後面的位數並不是需要與所有的被成熟想成才能知道的。

47下面我們以625的平方為例來說明。

486 2 5

49x 6 2 5

50——————————

513 1 2 5

521 2 5 0

533 7 5 0

54_____________

553 9 0 6 2 5

5657

對於自守數625來說,我們只需要知道後面的3位數就行了,而不必計算整個平方的

58結果,在上面計算的過程中可知道並不是它的每一位都會對乘積的後三位產生影響。

59規律如下:

60對於個位數與被乘數相乘的積中,用被乘數的後3位625與乘數的個位5相乘;

61對於十位數與被乘數相乘的積中,用被乘數的後2位25與乘數的十位20相乘;

62對於百位數與被乘數相乘的積中,用被乘數的後1位5與乘數的百位600相乘;

63對於以上各位相乘的積累加,再取最後三位即可。

64實現如下:

65*/

6667

//用乙個函式得到num的後n位,如124後2位24;

68long cut_num(long num,int

n)69

76long m=num;//

用來儲存後n位

77 m=m%(long)(pow(10

,n));

78return

m;79}80

81int zishoushu2(long

num)

8294

long ans=cut_num(sum,count2);

95 printf("

the ans is %ld\n

",ans );

96if(ans==num)

97100

else

101return0;

102103

104}

105106

107int

main()

108117

else

118 printf("

the number %ld is not zishou number \n

",n );

119return0;

120 }

1/*2

題目:儲存數字的後n位

3author taoliu——alex 2016.1045

疑惑點:

6為什麼後兩位就出錯,此外其他位都沒有問題7比如

8625 後兩位的結果顯示31,但是其他為都正常,我找不出原因。

9後來換了其他的編輯器,顯示的沒問題,看來我這個編輯器有點問題啊

1011

1213

*/14 #include 15 #include 16

17int digit(long

n)18

27return count-1;28

}2930long cut_num(long num,int

n)31

38long m=num;//

用來儲存後n位

39 m=m%(long)(pow(10

,n));

40return

m;41}42

4344

intmain()

45

換了編譯器後的結果顯示

演算法15 數論2 親密數

如果整數a的因子和等於整數b,整數b的因子和等於整數a,因子包括1但不包括本身,且a不等於b,則稱a和b為親密數對。1 2 題目 親密數 3author taoliu alex 2016.1045 主要實現兩種 61 判斷兩個數是不是親密數。72 找出一定範圍內的親密數。89 10 1112 inc...

演算法15 數論3 水仙花數

簡單地說。三維正整數在樹枝上等於其各位數字的立方之和,稱為水仙花數 同樣我們也可以定義一些更高等級的水仙花數,比如4位的,例如1634,1634位1,6,3,4的四次方和。1 2 3題目 水仙花數 4author taoliu alex 2016.1056 主要實現 71 找出給定位數內的水仙花數 ...

演算法題 N 自守數

如果某個數 k 的平方乘以 n 以後,結果的末尾幾位數等於 k,那麼就稱這個數為 n 自守數 例如 3 922 25392,而 25392 的末尾兩位正好是 92,所以 92 是乙個 3 自守數。本題就請你編寫程式判斷乙個給定的數字是否關於某個 n 是 n 自守數。輸入格式 輸入在第一行中給出正整數...