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