正剧开始:
星历2016年02月12日 10:51:39, 银河系厄尔斯星球中华帝国江南行省。
[工程师阿伟]正在和[机器小伟]一起研究因数和倍数。
<span style="font-size:18px;">>>> 18的因数有[1, 2, 3, 6, 9] 30的因数有[1, 2, 3, 5, 6, 10, 15] 36的因数有[1, 2, 3, 4, 6, 9, 12, 18] def factor(num): factors = []; num = int(num); try: for i in range(1, num//2+1): quotient, remainder = divmod(num, i); if remainder == 0: factors.append(i); print('{0}的因数有{1}'.format(num, factors)); except: pass; return;</span>
<span style="font-size:18px;">>>> 2的倍数有[2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98] ... 3的倍数有[3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99] ... 5的倍数有[5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95] ... def multiple(num): multiples = []; try: for i in range(num, 100): quotient, remainder = divmod(i, num); if remainder == 0: multiples.append(i); print('{0}的倍数有{1} ...'.format(num, multiples)); except: pass; return; if __name__ == '__main__': #factor(18); multiple(2); multiple(3); multiple(5);</span>
<span style="font-size:18px;">>>> 36的因数有[1, 2, 3, 4, 6, 9, 12, 18] 60的因数有[1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30] 10的因数有[1, 2, 5] 17的因数有[1] 28的因数有[1, 2, 4, 7, 14] 32的因数有[1, 2, 4, 8, 16] 48的因数有[1, 2, 3, 4, 6, 8, 12, 16, 24] 4的倍数有[4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, 68, 72, 76, 80, 84, 88, 92, 96] ... 7的倍数有[7, 14, 21, 28, 35, 42, 49, 56, 63, 70, 77, 84, 91, 98] ... 10的倍数有[10, 20, 30, 40, 50, 60, 70, 80, 90] ... 6的倍数有[6, 12, 18, 24, 30, 36, 42, 48, 54, 60, 66, 72, 78, 84, 90, 96] ... 9的倍数有[9, 18, 27, 36, 45, 54, 63, 72, 81, 90, 99] ... if __name__ == '__main__': factor(36); factor(60); factor(10); factor(17); factor(28); factor(32); factor(48); multiple(4); multiple(7); multiple(10); multiple(6); multiple(9);</span>
<span style="font-size:18px;">>>> 1的因数有[1] 7的因数有[1, 7] 10的因数有[1, 2, 5, 10]</span>
<span style="font-size:18px;">>>> 6 是第1个完全数。 28 是第2个完全数。 496 是第3个完全数。 8128 是第4个完全数。 #完全数 def completeNumber(): count = 0; over = 0; for i in range(1, 15000): over = 0; total = 0; for j in range(2, i+1): if over > 0: break; quotient, remainder = divmod(i, j); if remainder == 0: total += quotient; if total > i: over = 1; if j >= i and over == 0 and total == i: count += 1; print('{0} 是第{1}个完全数。'.format(i, count));</span>
<span style="font-size:18px;">>>> 1的因数有[1] 2的因数有[1, 2] 3的因数有[1, 3] 4的因数有[1, 2, 4] 5的因数有[1, 5] 6的因数有[1, 2, 3, 6] 7的因数有[1, 7] 8的因数有[1, 2, 4, 8] 9的因数有[1, 3, 9] 10的因数有[1, 2, 5, 10] 11的因数有[1, 11] 12的因数有[1, 2, 3, 4, 6, 12] 13的因数有[1, 13] 14的因数有[1, 2, 7, 14] 15的因数有[1, 3, 5, 15] 16的因数有[1, 2, 4, 8, 16] 17的因数有[1, 17] 18的因数有[1, 2, 3, 6, 9, 18] 19的因数有[1, 19] 20的因数有[1, 2, 4, 5, 10, 20] >>> 1的因数有[1] 2的因数有[1, 2] 2 是质数。 3的因数有[1, 3] 3 是质数。 4的因数有[1, 2, 4] 4 是合数。 5的因数有[1, 5] 5 是质数。 6的因数有[1, 2, 3, 6] 6 是合数。 7的因数有[1, 7] 7 是质数。 8的因数有[1, 2, 4, 8] 8 是合数。 9的因数有[1, 3, 9] 9 是合数。 10的因数有[1, 2, 5, 10] 10 是合数。 11的因数有[1, 11] 11 是质数。 12的因数有[1, 2, 3, 4, 6, 12] 12 是合数。 13的因数有[1, 13] 13 是质数。 14的因数有[1, 2, 7, 14] 14 是合数。 15的因数有[1, 3, 5, 15] 15 是合数。 16的因数有[1, 2, 4, 8, 16] 16 是合数。 17的因数有[1, 17] 17 是质数。 18的因数有[1, 2, 3, 6, 9, 18] 18 是合数。 19的因数有[1, 19] 19 是质数。 20的因数有[1, 2, 4, 5, 10, 20] 20 是合数。 if __name__ == '__main__': for i in range(1, 21): result = factor(i); if (len(result)>2): print(i, '是合数。'); elif (len(result) == 2): print(i, '是质数。');</span>
<span style="font-size:18px;">>>> 100以内的质数有: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97] if __name__ == '__main__': prime = []; for i in range(1, 101): result = factor(i); if (len(result) == 2): prime.append(i); print('100以内的质数有:', prime);</span>
<span style="font-size:18px;">>>> 4 = 2 + 2 6 = 3 + 3 8 = 3 + 5 9 = 2 + 7 10 = 3 + 7 12 = 5 + 7 14 = 3 + 11 15 = 2 + 13 16 = 3 + 13 18 = 5 + 13 20 = 3 + 17 21 = 2 + 19 22 = 3 + 19 24 = 5 + 19 25 = 2 + 23 26 = 3 + 23 28 = 5 + 23 30 = 7 + 23 32 = 3 + 29 33 = 2 + 31 34 = 3 + 31 36 = 5 + 31 38 = 7 + 31 39 = 2 + 37 40 = 3 + 37 42 = 5 + 37 44 = 3 + 41 45 = 2 + 43 46 = 3 + 43 48 = 5 + 43 49 = 2 + 47 50 = 3 + 47 52 = 5 + 47 54 = 7 + 47 55 = 2 + 53 56 = 3 + 53 58 = 5 + 53 60 = 7 + 53 62 = 3 + 59 63 = 2 + 61 64 = 3 + 61 66 = 5 + 61 68 = 7 + 61 69 = 2 + 67 70 = 3 + 67 72 = 5 + 67 74 = 3 + 71 75 = 2 + 73 76 = 3 + 73 78 = 5 + 73 80 = 7 + 73 81 = 2 + 79 82 = 3 + 79 84 = 5 + 79 85 = 2 + 83 86 = 3 + 83 88 = 5 + 83 90 = 7 + 83 91 = 2 + 89 92 = 3 + 89 94 = 5 + 89 96 = 7 + 89 98 = 19 + 79 99 = 2 + 97 #哥德巴赫猜想 def gdbhGuess(): for i in range(2, 200): if (len(factor(i)) <= 2): continue; half = i//2+1; solve = 0; for j in range(2, half): if solve > 0: break; if (len(factor(j))==2 and len(factor(i-j))==2): solve = 1; #部分打印 if (i < 100): print('{0} = {1} + {2}'.format(i, j, i-j)); if (j > half-1 and solve == 0): print(i, '不能拆成两个质数的和。'); return; if __name__ == '__main__': gdbhGuess();</span>
本节到此结束,欲知后事如何,请看下回分解。