Python判断一个整数是否为素数

  素数的定义:是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数

  即只能被1和自己本身整除的数

  思路及步骤

  1.   给定一个大于2的整数n
  2.   令i=2
  3.     用n除i,得到余数r
  4.        判断r==0是否成立,如果成立则n不是素数,结束算法;如果不成立则将i的值+1仍然用i表示
  5.       判断i>(n-1)是否成立,如果成立则n是素数;否则返回第3步

  流程图

 

   使用while语句实现

n = int(input("请输入一个数字:"))

i = 2
while True:
    if n < 2:
        print("请输入一个大于或者等于2的整数")
        break
    elif n == 2:
        print("{}是素数".format(n))
        break
    elif n > 2:
        r = n % i
        i += 1
        if r == 0 or i > n-1:
            if r == 0:
                print("{}不是素数".format(n))
                break
            else:
                print("{}是素数".format(n))
                break

  执行步骤

  如果n=1则退出

  如果n=2则输出2是素数

  如果n=3则按照以下步骤执行

  1,i=2 n=3 判断n>2满足条件执行r=3%2=1

  2,i增加1 i=3

  3,判断r == 0 结果为False  i > n-1 3>3-1 结果为True 整体结果为True继续执行if下面语句

  4,判断r==0结果为False则执行else输出3是素数

 

  如果n=4则安之以下步骤执行

  1,i=2 n=4判断n>2满足条件 执行r=4%2=0

  2,i增加1 i=3

  3,判断r==0结果为True整体结果为True无需判断i>n-1整体结果为True

  4,  判断r==0所以大于4不是素数

 

  以此类推

  输入任何数字只要可以被2至输入的整数之间的任意一个数整除即余数为0则可以判断为非素数

  直到被除数增加到与输入的数字一致之间还没有出现可以整数的被除数则判断该数为素数

 

  使用while循环需要把被除数i从2开始没执行一次+1 下面使用for循环实现,i的取值为2至输入的整数n

n = int(input("请输入一个数字:"))
for i in range(2, n):
    r = n % i
    if r == 0:
        print("{}不是素数".format(n))
        break
else:
    print("{}是素数".format(n))

  实现的效果是一样的

  本列使用for循环被除数为从2开始至n-1,如果之间有能整数的被除数则可以判断数字不是素数

  如果一直到n-1还是没有被整除则认为输入的n为素数

  注意else的位置是与for循环同级而不是与if同级,如果以if同级则在第一次循环i=2的时候就通过余数来判断一个数是奇数还是偶数了

  注意:在python中else不一定跟在if后也可以写在for后面

  

 

posted @ 2020-10-21 08:48  minseo  阅读(11791)  评论(0编辑  收藏  举报