[从头学数学] 第83节 因数与倍数

剧情提要:
[机器小伟]在[工程师阿伟]的陪同下进入练气期第十层功法的修炼,
这次要修炼的目标是[因数与倍数]。

正剧开始:

星历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>

[从头学数学] 第83节 因数与倍数_第1张图片

<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>

[从头学数学] 第83节 因数与倍数_第2张图片

[从头学数学] 第83节 因数与倍数_第3张图片

<span style="font-size:18px;">>>> 
1的因数有[1]
7的因数有[1, 7]
10的因数有[1, 2, 5, 10]</span>


[从头学数学] 第83节 因数与倍数_第4张图片

<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>


小伟找了15000范围内的完全数,只找到[人叫板老师]给的4个,由于运算速度对于越大的数来说越慢,真让小伟不敢继续找下去。


[从头学数学] 第83节 因数与倍数_第5张图片

[从头学数学] 第83节 因数与倍数_第6张图片

[从头学数学] 第83节 因数与倍数_第7张图片

<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>


[从头学数学] 第83节 因数与倍数_第8张图片

<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>


[从头学数学] 第83节 因数与倍数_第9张图片

[从头学数学] 第83节 因数与倍数_第10张图片


<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>


本节到此结束,欲知后事如何,请看下回分解。



你可能感兴趣的:([从头学数学] 第83节 因数与倍数)