[从头学数学] 第205节 初等数论初步

剧情提要:

[机器小伟]在[工程师阿伟]的陪同下进入了[九转金丹]之第七转的修炼。

这次要研究的是[初等数论初步]。

正剧开始:

星历2016年05月08日 10:05:37, 银河系厄尔斯星球中华帝国江南行省。

[工程师阿伟]正在和[机器小伟]一起研究[初等数论初步]。

<span style="font-size:18px;">710316能被3整除
710316能被9整除
710316 不能 被11整除
710316 不能 被7整除

#根据规律判整除性
#其实并不实用,只是说明一下规律
def tmp():
    number = 710316;
    array =  numberArray(number);
    size = len(array);

    #被11整除
    array_odd = array[0:size:2];
    array_even = array[1:size:2];

    #被7整除
    array_last3 = number%1000;
    array_front = (number-array_last3)//1000;

    #判断被3整除
    if sum(array)%3==0:
        print('{0}能被3整除'.format(number));
    else:
        print('{0} 不能 被3整除'.format(number));

    #判断被9整除
    if sum(array)%9==0:
        print('{0}能被9整除'.format(number));
    else:
        print('{0} 不能 被9整除'.format(number));

    #判断被11整除
    if (sum(array_odd)-sum(array_even))%11 == 0:
        print('{0}能被11整除'.format(number));
    else:
        print('{0} 不能 被11整除'.format(number));

    #判断被7整除
    if (array_last3 - array_front)%7==0:
        print('{0}能被7整除'.format(number));
    else:
        print('{0} 不能 被7整除'.format(number));

#把一个整数的各位数字放入数组
#由个位往高位排列
def numberArray(number):
    array = [];
    bit = len(str(number));

    for i in range(bit):
        array.append(number%10);
        number//=10;

    #array.reverse();

    return array;</span>

<span style="font-size:18px;">#判断一个数是否质数
def prime(num):
    if (num < 2):
        return False;  

    sqr = int(math.sqrt(num))+1;  

    for i in range(2, sqr):
        if (num%i==0):
            return False;  

    return True; </span>

<span style="font-size:18px;">#最大公约数
def gcd(m, n):
    m, n = max(m, n), min(m, n);
    i = 1;
    while n:
        print('step', i, ': ', m, n);
        i += 1;
        m, n = n, m % n    

    return m</span>

<span style="font-size:18px;">#最小公倍数
def lcm(m, n):
    return m*n/gcd(m, n);</span>

<span style="font-size:18px;">>>>
2625.0

print(lcm(375, 105));</span>

<span style="font-size:18px;">#分解质因数
def primeFactor(num, lists):
    if (num < 2):
        lists.append(num);
        return lists;
    elif (prime(num) == True):
        lists.append(num);
        return lists;
    else:
        sqr = int(math.sqrt(num))+1;
        i = 2;  

        while i <= sqr:
            if (num % i == 0 and prime(i) == True):
                lists.append(i);
                num = num//i;
                break;  

            i+=1;
        return primeFactor(num, lists); </span>

<span style="font-size:18px;">>>>
720 = 2 * 2 * 2 * 2 * 3 * 3 * 5
152 = 2 * 2 * 2 * 19
8
13680.0

def tmp2():
    number = [720, 152];

    for j in range(len(number)):
        factors = primeFactor(number[j], []);
        count = len(factors);
        s = str(number[j])+' = ';

        for i in range(count):
            s += str(factors[i]);
            if (i < count-1):
                s += ' * ';

        print(s);

    print(gcd(720,152));
    print(lcm(720, 152));</span>

<span style="font-size:18px;">>>>
21的欧拉函数值φ(21) = 12.0

def tmp3(number):
    print('{0}的欧拉函数值φ({0}) = {1}'.format(number, round(eulerPhi(number),3)))

#欧拉函数
def eulerPhi(number):
    factors = set(primeFactor(number, []));

    factors = sorted(factors);
    #print(factors);

    phi = number;

    for i in range(len(factors)):
        phi *= (1-1/factors[i]);

    return phi;</span>

<span style="font-size:18px;">>>>
25的欧拉函数值φ(25) = 20.0

def tmp4():
    for i in range(1, 21):
        if (18**i)%25==1:
            print(i);
            break;</span>

<span style="font-size:18px;">>>>
[4.0, 9.0, 14.0]

def tmp5():
    result = [];
    mod = 15;
    remain = 6;
    quotient = 9;

    for i in range(1, 20):
        x = (mod*i + remain)/quotient;
        if abs((int(x))-x)< 1e-6:
            result.append(x);

        if x > mod:
            break;

    print(result);</span>

<span style="font-size:18px;">>>>
[9.0]

#例6
def tmp5():
    result = [];
    mod = 74;
    remain = 1;
    quotient = 33;

    for i in range(1, 20):
        x = (mod*i + remain)/quotient;
        if abs((int(x))-x)< 1e-6:
            result.append(x);

        if x > mod:
            break;

    print(result);</span>

<span style="font-size:18px;">		var s = [
			'f(a)=e, f(b)=f, f(c)=g',
			'a=-1,  e=2;',
			'b=0,  f=3;',
			'c=1,  g=6;',
			'f(x) = 2(x-0)(x-1)/(-1)/(-2)',
			' +3(x+1)(x-1)/(1)/(-1)',
			' +6(x+1)(x-0)/(2)/(1)',
		];</span>
<span style="font-size:18px;">[58, 238, 418, 598, 778, 958, 1138, 1318, 1498]

#孙子定理的变通
def tmp6():
    remain = [2, 3, 4];
    mod = [4, 5, 9];
    count = len(mod);

    multi = 1;
    for i in range(count):
        multi *= mod[i];

    #直接遍历这个范围
    bound = sum(remain)*multi+1;
    result = [];

    for i in range(1, bound):
        for j in range(count):
            if i%mod[j]!=remain[j]:
                break;
            if j >= count-1:
                result.append(i);

    print(result);</span>
<span style="font-size:18px;">[282, 975, 1668, 2361, 3054, 3747, 4440, 5133, 5826, 6519, 7212, 7905]

#孙子定理的变通
def tmp6():
    #模数
    mod = [7, 9, 11];
    #余数
    remain = [2, 3, 7];

    count = len(mod);

    multi = 1;
    for i in range(count):
        multi *= mod[i];

    #直接遍历这个范围
    bound = sum(remain)*multi+1;
    result = [];

    for i in range(1, bound):
        for j in range(count):
            if i%mod[j]!=remain[j]:
                break;
            if j >= count-1:
                result.append(i);

    print(result);</span>
<span style="font-size:18px;">[2111, 4421, 6731, 9041, 11351, 13661, 15971, 18281, 20591, 22901, 25211, 27521, 29831, 32141, 34451, 36761, 39071, 41381, 43691, 46001]

#韩信点兵

#孙子定理的变通
def tmp6():
    #模数
    mod = [5, 6, 7, 11];
    #余数
    remain = [1, 5, 4, 10];

    count = len(mod);

    multi = 1;
    for i in range(count):
        multi *= mod[i];

    #直接遍历这个范围
    bound = sum(remain)*multi+1;
    result = [];

    for i in range(1, bound):
        for j in range(count):
            if i%mod[j]!=remain[j]:
                break;
            if j >= count-1:
                result.append(i);

    print(result);</span>

<span style="font-size:18px;">2 30 68
5 25 70
8 20 72
11 15 74
14 10 76
17 5 78
20 0 80

#百马百瓦
def tmp8():
    a = 33;
    b = 50;
    c = 200;
    result = [];

    for i in range(a+1):
        for j in range(b+1):
            for k in range(c+1):
                if (abs(((i*3 + j*2 + k*0.5) - 100)) < 1e-6) and i+j+k == 100:
                    print(i, j, k);</span>

<span style="font-size:18px;">#不定方程
def tmp7():
    #ax + by  = c
    #b为大于1的整数
    a, b, c = 3, 2, 5;

    u, v, i, j = a, b, 0, 1;
    r = u%v;
    k = j;

    while r!=1:
        u, v = v, r;
        q = u//v;
        r = u%v;
        j = i-q*j;
        i = k;
        k = j;

    x = c*k;
    y = c*(1-a*k)/b;

    print(x, y);</span>

>>>
-34 6.0

#不定方程
def tmp7():
    #ax + by  = c
    #b为大于1的整数
    a, b, c = 13, 74, 2;

    u, v, i, j = a, b, 0, 1;
    r = u%v;
    k = j;

    while r!=1:
        u, v = v, r;
        q = u//v;
        r = u%v;
        j = i-q*j;
        i = k;
        k = j;

    x = c*k;
    y = c*(1-a*k)/b;

    print(x, y);
	

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

时间: 2024-10-10 22:30:22

[从头学数学] 第205节 初等数论初步的相关文章

[从头学数学] 第174节 算法初步

剧情提要: [机器小伟]在[工程师阿伟]的陪同下进入了结丹中期的修炼, 这次要修炼的目标是[算法初步]. 正剧开始: 星历2016年04月12日 08:54:58, 银河系厄尔斯星球中华帝国江南行省. [工程师阿伟]正在和[机器小伟]一起研究[算法初步]. [人叫板老师]指点小伟说:"这金丹要想大成,顺利进入元婴期,就必须进行九转培炼. 这什么是九转培炼法门呢?就是要先快速的修炼[天地人正册]进入后期,不要管各种辅修 功法,然后从头游历[天地人列国],在游历中增长见闻,精炼神通,最后再修炼[术.

[从头学数学] 第156节 概率初步

剧情提要: [机器小伟]在[工程师阿伟]的陪同下进入了筑基后期的修炼, 这次要修炼的目标是[概率初步]. 正剧开始: 星历2016年04月02日 08:44:03, 银河系厄尔斯星球中华帝国江南行省. [工程师阿伟]正在和[机器小伟]一起研究[概率初步]. 既然[人叫板老师]都让小伟掷骰子了,小伟怎么能不掷呢? 这个字怎么读'投'啊,小伟一直读作sai的. <span style="font-size:18px;"> for (var i = 0; i < 3; i+

[从头学数学] 第206节 优选法与试验设计初步

剧情提要: [机器小伟]在[工程师阿伟]的陪同下进入了[九转金丹]之第七转的修炼. 这次要研究的是[优选法与试验设计初步]. 正剧开始: 星历2016年05月08日 16:07:12, 银河系厄尔斯星球中华帝国江南行省. [工程师阿伟]正在和[机器小伟]一起研究[优选法与试验设计初步]. <span style="font-size:18px;">>>> a = 1+1-2*math.cos(108/180*math.pi); >>> a

[从头学数学] 第223节 带着计算机去高考(十五)

剧情提要: [机器小伟]在[工程师阿伟]的陪同下进入了[九转金丹]之第八转的修炼.设想一个场景: 如果允许你带一台不连网的计算机去参加高考,你会放弃选择一个手拿计算器和草稿本吗 ?阿伟决定和小伟来尝试一下用计算机算高考题会是怎样的感觉. 正剧开始: 星历2016年05月26日 10:23:46, 银河系厄尔斯星球中华帝国江南行省. [工程师阿伟]正在和[机器小伟]一起做着2014年的江苏省数学高考题]. 这一年的题和上一年一样的难,阿伟决定再交一次白卷. 好,卷子贴完,下面进入这次的主题. 这是

[从头学数学] 第215节 带着计算机去高考(七)

剧情提要: [机器小伟]在[工程师阿伟]的陪同下进入了[九转金丹]之第八转的修炼.设想一个场景: 如果允许你带一台不连网的计算机去参加高考,你会放弃选择一个手拿计算器和草稿本吗 ?阿伟决定和小伟来尝试一下用计算机算高考题会是怎样的感觉. 正剧开始: 星历2016年05月20日 17:13:35, 银河系厄尔斯星球中华帝国江南行省. [工程师阿伟]正在和[机器小伟]一起做着2006年的江苏省数学高考题]. 这一年,江苏重新使用了全国卷,并且这张试卷的难度也比较高,可以说, 也是打了考生一个措手不及

[从头学数学] 第192节 导数及其应用

剧情提要: [机器小伟]在[工程师阿伟]的陪同下进入了[九转金丹]之第五转的修炼. 这次要研究的是[导数及其应用]. 正剧开始: 星历2016年04月23日 16:32:36, 银河系厄尔斯星球中华帝国江南行省. [工程师阿伟]正在和[机器小伟]一起研究[导数及其应用]. <span style="font-size:18px;">>>> [-3.000001001396413, -2.999998999442255] [4.999998999721811

[从头学数学] 第214节 带着计算机去高考(六)

剧情提要: [机器小伟]在[工程师阿伟]的陪同下进入了[九转金丹]之第八转的修炼.设想一个场景: 如果允许你带一台不连网的计算机去参加高考,你会放弃选择一个手拿计算器和草稿本吗 ?阿伟决定和小伟来尝试一下用计算机算高考题会是怎样的感觉. 正剧开始: 星历2016年05月20日 11:40:58, 银河系厄尔斯星球中华帝国江南行省. [工程师阿伟]正在和[机器小伟]一起做着2005年的江苏省数学高考题]. 总体来说,这次的难度和上一年持平,都是很厚道的那种, 不过上一年的好多题都像闹着玩似的,这次

[从头学数学] 第220节 带着计算机去高考(十二)

剧情提要: [机器小伟]在[工程师阿伟]的陪同下进入了[九转金丹]之第八转的修炼.设想一个场景: 如果允许你带一台不连网的计算机去参加高考,你会放弃选择一个手拿计算器和草稿本吗 ?阿伟决定和小伟来尝试一下用计算机算高考题会是怎样的感觉. 正剧开始: 星历2016年05月24日 17:11:11, 银河系厄尔斯星球中华帝国江南行省. [工程师阿伟]正在和[机器小伟]一起做着2011年的江苏省数学高考题]. 2011年的卷子,难度比上一年的稍小一点,但阿伟觉得也达到了5.5环的难度. 这次的特色,是

[从头学数学] 第179节 三角初等变换

剧情提要: [机器小伟]在[工程师阿伟]的陪同下进入了结丹中期的修炼, 这次要修炼的目标是[三角初等变换]. 正剧开始: 星历2016年04月15日 15:32:35, 银河系厄尔斯星球中华帝国江南行省. [工程师阿伟]正在和[机器小伟]一起研究[三角初等变换]. <span style="font-size:18px;"> if (1) { var mathText = new MathText(); var s = [ '和角.差角公式', 'sin(A+B) = si