程序员数学基础【四、取模应用-判断奇偶数、判断素数、求两个数的最大公约数、水仙花数】(Python版本)

测试使用语言:【Python】

由于此类语言入门非常容易,哪怕初中生亦可以,并且本科/研究生写论文、做实验多数所用语言都是【Python】故而选择此语言。

代码运行平台:【win10 x64】
代码环境安装:【https://blog.csdn.net/feng8403000/article/details/113784766】
代码编码格式:【https://blog.csdn.net/feng8403000/article/details/113785344】

完整的vs搭建并使用【Python】,非常简单,基础部分无需任何环境配置,工具自带即可。

前言:

模运算在数论和程序设计中都有着广泛的应用,奇偶数的判别到素数的判别,从模幂运算到最大公约数的求法,从孙子问题到凯撒密码问题,无不充斥着模运算的身影。虽然很多数论教材上对模运算都有一定的介绍,但多数都是以纯理论为主,对于模运算在程序设计中的应用涉及不多。那么今天我们就用几个案例来试试:

1、判断奇偶数:

奇数(英文:odd),正奇数又称单数, 整数中,能被2整除的数是bai偶数,不能被2整除的数是奇数,奇数的个位为1,3,5,7,9。偶数可用2k表示,奇数可用2k+1表示,这里k就是整数。

偶数是能够被2所整除的整数。正偶数也称双数。若某数是2的倍数,它就是偶数,可表示为2n;若非,它就是奇数,可表示为2n+1(n为整数),即奇数除以二的余数是一。

0是一个特殊的偶数。它既是正偶数与负偶数的分界线,又是正奇数与负奇数的分水岭。

while True:
    x=int(input("请输入一个整数:\n"))
    if x%2==0:
        print(x,"是偶数")
    else:
        print(x,"是奇数")

2、判断素数:

质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数(规定1既不是质数也不是合数)。

while True:
    x = int(input("请输入一个整数:\n"))
    isf = True
    for j in range(2,x):#排除1和本身,所以是从2开始到x,而不是1到x+1
        if x % j == 0:
            isf = False
    if isf:
        print(x,"是素数")
    else:
        print(x,"不是素数")

3、求两个数的最大公约数:(辗转相除法)

最大公因数,也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个。a,b的最大公约数记为(a,b),同样的,a,b,c的最大公约数记为(a,b,c),多个整数的最大公约数也有同样的记号。求最大公约数有多种方法,常见的有质因数分解法、短除法、辗转相除法、更相减损法。与最大公约数相对应的概念是最小公倍数,a,b的最小公倍数记为[a,b]。

while True:
    x = int(input("请输入第一个整数:\n"))
    y = int(input("请输入第二个整数:\n"))
    one=x
    two=y
    max=1
    #利用辗转相除法
    while True:
        max=one%two
        if max == 0:
            break
        else:
            one=two
            two=max
    print("{0}是{1}与{2}的最大公约数".format(two,x,y))

4、求所有3位数的水仙花数(穷举法)

水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。

注:必须使用【//除法取整】而不是【/除法】

for x in range(100,1000):
    one=x//100
    two=x//10%10
    three=x%10
    if one**3 + two**3 + three**3 ==x:
        print(x,"是水仙花数")

 

下篇内容为:【程序员数学基础【五、math库常用函数】(Python版本)】:【https://blog.csdn.net/feng8403000/article/details/114198523

万丈高楼平地起,程序员数学基础,从小学的【什么是数学】至【离散数学】(主要是图论)咱们一步步成长,共同加油。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

红目香薰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值