Re: [中學] 數論

看板Math作者 (Chaotic Good)時間14年前 (2011/12/18 02:50), 編輯推噓3(300)
留言3則, 3人參與, 最新討論串5/20 (看更多)
※ 引述《lilygarfield (愛情讓我變成詩人)》之銘言: : 標題: [中學] 數論 : 時間: Fri Dec 16 11:18:47 2011 : : 從 : : 1/2, 1/3, 1/4, 1/5, ..., 1/99 中 : : 挑出10個數,使之加總為 1 : : 該挑那10個數? : : : -- : ※ 發信站: 批踢踢實業坊(ptt.cc) : ◆ From: 140.126.180.33 有版友已經給出一些特解了。 我用幾年前組的電腦,CPU:AMD Athlon 64 X2 Dual Core 5600+ 2.91 GHz 跑了 CPU時間(註)八小時五十分後,得到下面這些一部份的解。 解:{99,90,84,77,70,60,55,14,3,2} 解:{99,91,78,77,70,63,55,14,3,2} 解:{99,90,88,77,66,60,56,14,3,2} 解:{91,90,84,78,72,60,56,14,3,2} 解:{99,88,84,77,66,63,56,14,3,2} 解:{95,91,84,78,76,70,38,15,3,2} 解:{99,90,88,77,70,66,40,15,3,2} 解:{91,90,84,78,72,70,40,15,3,2} 解:{99,91,90,78,77,55,42,15,3,2} 解:{91,90,84,78,70,60,45,15,3,2} 解:{99,88,77,72,70,66,45,15,3,2} 解:{99,90,80,77,70,55,48,15,3,2} 解:{91,90,80,78,72,56,48,15,3,2} 解:{91,84,80,78,70,60,48,15,3,2} 解:{99,90,77,75,70,55,50,15,3,2} 解:{91,90,78,75,72,56,50,15,3,2} 解:{91,84,78,75,70,60,50,15,3,2} 解:{99,90,77,72,63,56,55,15,3,2} 解:{91,90,78,72,66,56,55,15,3,2} 解:{99,84,77,70,63,60,55,15,3,2} 解:{91,84,78,70,66,60,55,15,3,2} 解:{99,88,77,66,63,60,56,15,3,2} 解:{91,84,78,72,63,60,56,15,3,2} 解:{96,91,84,80,78,70,32,16,3,2} 解:{91,88,84,80,78,70,33,16,3,2} 解:{91,90,80,78,72,70,35,16,3,2} 解:{99,88,80,77,70,66,36,16,3,2} 解:{91,84,80,78,72,70,36,16,3,2} 解:{95,91,80,78,76,56,38,16,3,2} 解:{95,90,80,76,72,60,38,16,3,2} 解:{95,84,80,76,72,63,38,16,3,2} 解:{99,90,80,77,70,55,40,16,3,2} 解:{91,90,80,78,72,56,40,16,3,2} 解:{91,84,80,78,70,60,40,16,3,2} 解:{91,84,80,78,70,56,42,16,3,2} 解:{90,84,80,72,70,60,42,16,3,2} 解:{91,80,78,72,70,63,42,16,3,2} 解:{91,80,78,77,70,56,44,16,3,2} 解:{90,80,77,72,70,60,44,16,3,2} 解:{84,80,77,72,70,63,44,16,3,2} 解:{91,90,84,78,70,48,45,16,3,2} 解:{99,80,77,72,70,55,45,16,3,2} 解:{91,90,80,78,60,56,45,16,3,2} 解:{91,84,80,78,63,56,45,16,3,2} 解:{90,84,80,72,63,60,45,16,3,2} 解:{91,84,78,75,70,50,48,16,3,2} 解:{99,90,77,70,60,55,48,16,3,2} 解:{99,84,77,70,63,55,48,16,3,2} 解:{91,84,78,70,66,55,48,16,3,2} 解:{91,90,78,72,60,56,48,16,3,2} 解:{99,88,77,66,63,56,48,16,3,2} 解:{91,84,78,72,63,56,48,16,3,2} 解:{90,80,75,72,66,55,50,16,3,2} 解:{91,80,78,75,60,56,50,16,3,2} 解:{84,80,75,72,63,60,50,16,3,2} 解:{99,80,77,63,60,56,55,16,3,2} 解:{91,80,78,66,60,56,55,16,3,2} 解:{84,80,72,66,63,60,55,16,3,2} 解:{99,90,85,77,70,55,34,17,3,2} 解:{91,90,85,78,72,56,34,17,3,2} 解:{91,85,84,78,70,60,34,17,3,2} 解:{99,88,84,77,72,66,28,18,3,2} 解:{91,90,84,78,70,60,30,18,3,2} 解:{99,88,77,72,70,66,30,18,3,2} 解:{99,96,77,72,70,55,32,18,3,2} 解:{96,91,90,78,60,56,32,18,3,2} 解:{96,91,84,78,63,56,32,18,3,2} 解:{96,90,84,72,63,60,32,18,3,2} 解:{99,88,77,72,70,55,33,18,3,2} 解:{91,90,88,78,60,56,33,18,3,2} 解:{91,88,84,78,63,56,33,18,3,2} 解:{99,91,78,72,66,56,33,18,3,2} 解:{99,90,84,66,63,60,33,18,3,2} 解:{90,88,84,72,63,60,33,18,3,2} 簡略地說有十個參數要跑迴圈,最外層(最後一位)連2都還沒跑完, 外面數來第二層連3都還沒跑完;所以這只是全部解的一小小小小小小小部份。 當然,從數學的角度而言,跑出全部的解或許還比較有意義一點, 只跑出這一小部份的解並沒什麼意義; 僅是用來對解的個數做一個初步的想像參考用途而已,即:解其實是很多的。 這種整數倒數和方程的問題,一個比較有意義的應用有: 求出所有可能的正n邊體(只有五種)。有興趣的人,可以參考: Algebra,Michael Artin,1991;Chapter 5, Section 9, Finite subgroups of the rotation group. 註: CPU時間的意思是指以CPU100%的最高時脈計算下的"工作量時間", 而非電腦開機的實際時間, 比方說CPU用50%的力量,跑了3分鐘後,又用了30%的力量跑了6分鐘, 那麼則跑了3*0.5+6*0.3=3.3分鐘的 CPU時間 ============================================================ 我是用Mathematica跑的,Coding不是我的本業, 以天賦樹技能來打比方的話,大概就是只點一點技能點開眼而己; 所以Code應該是很鳥,有很大的改進空間。 演算法也只用到了基礎的上下限bound來減少檢驗數, 並沒有太大的精緻化,應該也有很大的改良空間。 而未足取數和就為1時,所造成的迴圈上下限分母為零的情況也還沒修掉。 因為不是什麼致命性的問題,嘗試修了一下,也改不太好,所以就偷懶不修了。 有興趣的,可以看看要不要大幅幫忙改良一下。 Clear["Global`*"] numberofloop = 3 now := numberofloop endnumber := 99 counter = 0 vari = Join[Array[2 &, numberofloop], {1}] recurrence[ now_] := (For[ vari[[now]] = Max[vari[[now + 1]] + 1, IntegerPart[ 1/(1 - Sum[1/vari[[i]], {i, now + 1, numberofloop}])]], (vari[[ now]] <= Min[endnumber, IntegerPart[ now/(1 - Sum[1/vari[[i]], {i, now + 1, numberofloop}])] + 1]) && (1/(1 - Sum[1/vari[[i]], {i, now + 1, numberofloop}]) != 0 || now == 2), vari[[now]]++, If[now == 1 , If[Sum[1/vari[[i]], {i, 1, numberofloop}] == 1, Print["解:", Take[vari, numberofloop]]]; counter++, recurrence[now - 1]]]) recurrence[now] Print["共跑", counter, "組"] ==================================================================== 當取的數不多的時候,應該是靠細緻的人工分析,就可以解出所有解了。 (比方說3個就很簡單。 XD) 或許更無腦一點的方法,就只是把電腦演算的動作變成人腦執行而已,也可以解出來。 這些應該也是不錯的動腦問題,所以我再把取數少的狀況,用電腦跑出的解也列一下。 3個: 解:{6,3,2} 4個: 解:{42,7,3,2} 解:{24,8,3,2} 解:{18,9,3,2} 解:{15,10,3,2} 解:{20,5,4,2} 解:{12,6,4,2} 5個: 解:{1806,43,7,3,2} 解:{924,44,7,3,2} 解:{630,45,7,3,2} 解:{483,46,7,3,2} 解:{336,48,7,3,2} 解:{294,49,7,3,2} 解:{238,51,7,3,2} 解:{189,54,7,3,2} 解:{168,56,7,3,2} 解:{140,60,7,3,2} 解:{126,63,7,3,2} 解:{105,70,7,3,2} 解:{91,78,7,3,2} 解:{600,25,8,3,2} 解:{312,26,8,3,2} 解:{216,27,8,3,2} 解:{168,28,8,3,2} 解:{120,30,8,3,2} 解:{96,32,8,3,2} 解:{88,33,8,3,2} 解:{72,36,8,3,2} 解:{60,40,8,3,2} 解:{56,42,8,3,2} 解:{342,19,9,3,2} 解:{180,20,9,3,2} 解:{126,21,9,3,2} 解:{99,22,9,3,2} 解:{72,24,9,3,2} 解:{54,27,9,3,2} 解:{45,30,9,3,2} 解:{240,16,10,3,2} 解:{90,18,10,3,2} 解:{60,20,10,3,2} 解:{40,24,10,3,2} 解:{231,14,11,3,2} 解:{110,15,11,3,2} 解:{33,22,11,3,2} 解:{156,13,12,3,2} 解:{84,14,12,3,2} 解:{60,15,12,3,2} 解:{48,16,12,3,2} 解:{36,18,12,3,2} 解:{30,20,12,3,2} 解:{28,21,12,3,2} 解:{35,15,14,3,2} 解:{420,21,5,4,2} 解:{220,22,5,4,2} 解:{120,24,5,4,2} 解:{100,25,5,4,2} 解:{70,28,5,4,2} 解:{60,30,5,4,2} 解:{45,36,5,4,2} 解:{156,13,6,4,2} 解:{84,14,6,4,2} 解:{60,15,6,4,2} 解:{48,16,6,4,2} 解:{36,18,6,4,2} 解:{30,20,6,4,2} 解:{28,21,6,4,2} 解:{140,10,7,4,2} 解:{42,12,7,4,2} 解:{28,14,7,4,2} 解:{72,9,8,4,2} 解:{40,10,8,4,2} 解:{24,12,8,4,2} 解:{18,12,9,4,2} 解:{15,12,10,4,2} 解:{120,8,6,5,2} 解:{45,9,6,5,2} 解:{30,10,6,5,2} 解:{20,12,6,5,2} 解:{20,6,5,4,3} 5個就已經有點恐怖了;我想下面應該不用再列了。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 182.235.189.13

12/18 02:52, , 1F
厲害~~~
12/18 02:52, 1F

12/18 03:01, , 2F
push
12/18 03:01, 2F

12/18 16:42, , 3F
推計算科學:P
12/18 16:42, 3F
文章代碼(AID): #1ExEHT8z (Math)
討論串 (同標題文章)
本文引述了以下文章的的內容:
以下文章回應了本文
中學
2
8
完整討論串 (本文為第 5 之 20 篇):
中學
0
1
中學
1
4
中學
0
4
中學
6
10
中學
1
1
中學
中學
9
15
中學
1
2
中學
中學
1
1
文章代碼(AID): #1ExEHT8z (Math)