無聊的整數

2021-09-02 15:56:59 字數 1971 閱讀 9473

1.完數

如果乙個數恰好等於其因子之和,這個數就稱為完數.

6 = 1 + 2 + 3

28 = 1 + 2 + 4 + 7 + 14

求10000以內的所有完數的過程:

(1)用n去除以1-n之間的所有整數,將能整除的被除數累加.

(2)最後判斷個因子之和是否等於數n,若相等,則數n為完數,輸出該數和各個因子.

public static void main(string args) 

}if (sum == i)

sum = 0;

} }

2.親密數

假設有a,b兩個數,若a的所有因子之和等於b的所有因子之和,且a不等於b,則

稱a和b是一對親密數,如284和220就是一對親密數.

若要找出10000以內的親密數,可使用以下演算法:

(1)對每乙個數a,將其因子分解出來,並將因子儲存到乙個陣列中,再將因子

之和儲存到變數b1.

(2)強因子之和b1再進行因子分解,並將因子儲存到乙個陣列中.將因子之和

儲存到變數b2中.

(3)若b2等於a,並且b1不等於b2,則找到一對親密數為a和b1,可將其輸出.

(4)重複步驟(1)-(3),即可找出指定範圍的親密數.

public static void main(string args) 

}for (n = 0, i = 1; i <= b / 2; i++)

}if (n == a && a < b)

} }

3.水仙花數

乙個三位數,若數值等於各位數字的三次冪之和,就稱為水仙花數

public static void main(string args) 

} }

4.自守數

所謂自守數,是指乙個數的平方的位數等於該數自身的自然數,例如:6的平方是36,尾數是6,所以6是自守           數;25的平方等於625,尾數是25,所以25是自守數.(1-200000之間只有9個自守數)

public static void main(string args) 

} }

5.最大公約數與最小公倍數

>歐幾里德演算法:

歐幾里德演算法採用輾轉相除的方法來求最大公約數,這是計算兩個數最大公約數的傳統演算法.

演算法思路:

(1)對於已知兩個數m,n,使m>n;

(2)m除以n得餘數r;

(3)若r=0,則n為求得的最大公約數,跳至(5)求最小公倍數,否則執行(4)

(4)將n的值儲存到m中,將r的值儲存到n中,重複執行步驟(2)(3)

(5)有了兩數的最大公約數,則最小公倍數就很簡單了,將兩數相乘的積除以最大公約數即可.

public static void main(string args)  else 

for (int d = c; d >= 1; d--)

} }

>stein演算法

stein演算法只有整數的移位和加減法,而不需要進行除法和取模運算,這將提高演算法的執行效率.不過不僅速度快,而且解決了歐幾里德演算法求兩個大數最大公約數的不便.

stein演算法如下(求a,b兩數的最大公約數).

public static void main(string args) 

static int stein(int x, int y)

if (0 == y)

while (x != y) else

} else

} else

}} return (x << factor);

}

無聊的生活,無聊的世界

最近是越來越無聊勒呢,我發現最近的我好像有點神經.神經兮兮的,我承認我以前就愛說,愛瘋,愛鬧,但是八,最近好像比以前還嚴重勒呢.阿,阿,算一算好像好長時間沒出家門勒呢 蛤蛤,自從退學好像越來越頹廢勒,不點阿不點,你完了,你真的完了,誒阿,一天就在家呆著,吃喝拉撒睡玩.這小生活過的,蠻享受的,但是就是...

無聊的python課程 Python無聊的總結

在公司無聊的時候看了前輩寫的python 突然發現乙個比較好玩的python表示式 1 lambda x,y x y 咋一看,這個應該類似方法之類的,上網查了查,所以特此總結下 lambda 上 冒號前邊的代表引數 冒號後邊的代表表示式 返回值型別跟引數有關 1 lambdax x2 at 0x01...

無聊的走著

習慣了乙個人走在路上,漫無目的的想著一些事情,我停不下來,那時心情很平靜很平靜,靜的有時會感覺到失落。以前是這樣的,其實我知道這樣是不對的,因為我一直奉守的觀點 某一時刻只能做一件事 人,畢竟不是計算機,更何況就是計算機也不是真正的並行處理。有個問題,如果你是乙個喜歡工作的人,當你做別的非工作的事時...