首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >程序员数学基础【四、取模应用-判断奇偶数、判断素数、求两个数的最大公约数、水仙花数】(Python版本)

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

作者头像
红目香薰
发布2022-11-28 17:27:48
发布2022-11-28 17:27:48
9950
举报
文章被收录于专栏:CSDNToQQCodeCSDNToQQCode

测试使用语言:【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是一个特殊的偶数。它既是正偶数与负偶数的分界线,又是正奇数与负奇数的分水岭。

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

2、判断素数:

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

代码语言:javascript
复制
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]。

代码语言:javascript
复制
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)。

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

代码语言:javascript
复制
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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-02-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 测试使用语言:【Python】
  • 代码运行平台:【win10 x64】 代码环境安装:【https://blog.csdn.net/feng8403000/article/details/113784766】 代码编码格式:【https://blog.csdn.net/feng8403000/article/details/113785344】
  • 前言:
  • 1、判断奇偶数:
  • 2、判断素数:
  • 3、求两个数的最大公约数:(辗转相除法)
  • 4、求所有3位数的水仙花数(穷举法)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档