找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 3343|回复: 4

[求助] 函数入门请教

1

主题

1

帖子

1

积分

贫民

积分
1
chy154318421 发表于 2020-2-11 03:35:15 | 显示全部楼层 |阅读模式
本人小白,刚接触python,目前学习到函数章节,以下是我的问题,希望大佬能提点一二:#判断质数
def isit(num):
    isdata = True
    if num==0 or num==1:
        return False
    elif num==2 or num==3:
        return True
    elif num>3:

        for i in range(2,num):
            if num%i==0:
                return False
                break
            else:
                return True

当print(isit(15))时
返回为True我不知道我是哪里出了错,希望得到大佬帮助,感激不尽!
回复

使用道具 举报

0

主题

8

帖子

8

积分

贫民

积分
8
温酒斩化腾 发表于 2020-2-13 02:26:39 | 显示全部楼层
你仔细想想,当num为15时,第一次执行for...in...循环,i == 2,num ==15,那么num%i == 1,不符合if的条件num%i == 0,因此执行else,即返回True
回复 支持 反对

使用道具 举报

0

主题

8

帖子

8

积分

贫民

积分
8
温酒斩化腾 发表于 2020-2-13 12:21:46 | 显示全部楼层
当调用isit(15)时,传入的参数是num = 15,前面两个if和elif都不符合条件,所以直接跳过,执行elif num>3:后面的内容,进入for...in循环,第一次循环,i=2,那么num % 2相当于15%2 == 1不符合if 的条件num%i == 0,所以执行else后面的内容,于是返回True
回复 支持 反对

使用道具 举报

0

主题

3

帖子

3

积分

贫民

积分
3
小龙在线 发表于 2020-2-15 21:32:30 | 显示全部楼层
你是不是想看输入的数是不是质数啊,那你该把返回的结果都放入一个列表里,然后再判断
回复 支持 反对

使用道具 举报

0

主题

102

帖子

102

积分

侠客

积分
102
傻眼貓咪 发表于 2021-8-5 20:15:43 | 显示全部楼层
本帖最后由 傻眼貓咪 于 2021-8-5 20:17 编辑

判定數值不大的質數的函數:
  1. def isPrime(num) -> bool:
  2.     for i in range(2, num):
  3.         if num%i == 0: return False
  4.     return False
复制代码

如果想判定超大數值是否為質數時,可以用米勒-拉賓質數判定法:
  1. def isPrime(n, k=5): # 米勒-拉賓質數判定法
  2.     from random import randint
  3.     if n < 2: return False
  4.     for p in [2,3,5,7,11,13,17,19,23,29]:
  5.         if n % p == 0: return n == p
  6.     s, d = 0, n-1
  7.     while d % 2 == 0:
  8.         s, d = s+1, d/2
  9.     for i in range(k):
  10.         x = pow(randint(2, n-1), d, n)
  11.         if x == 1 or x == n-1: continue
  12.         for r in range(1, s):
  13.             x = (x * x) % n
  14.             if x == 1: return False
  15.             if x == n-1: break
  16.         else: return False
  17.     return True
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表