繁体   English   中英

python 中的素数相同的程序不同的输出

[英]prime numbers in python same programs different outputs

我有这个任务,我必须编写一个代码来确定一个数字是否是素数,我无法提出解决方案,所以我搜索了网络并找到了以下代码(第一个)然后我编写了完全相同的代码,但名称不同,它不适用于 65、75 等数字,并说它们是质数,而它们不是。 你能帮我找出我做错了什么吗! 先感谢您!

我复制的代码:

    num=int(input())
if num > 1:
    for i in range(2, int(num/2)+1):
        if (num % i) == 0:
            print(num, "is not a prime number")
            break
    else:
        print(num, "is a prime number")
  
else:
    print(num, "is not a prime number")

我的代码:

addad=int(input())
if addad>1:
    for i in range(2,int(addad/2)+1):
        if (addad%i)==0:
            print("not prime")
            break
        else:
            print("prime")
            break
else:
    print("prime")

他们不一样。

在上面的代码中,您使用for...else但在第二个代码中您使用了if...else 仔细看看凹痕。 空白在 python 中具有重要意义。

我认为您可能需要阅读一些关于 python 中的 for/else的内容。 你肯定会发现不同之处。

很少描述, else如果for循环结束(没有中断),则与for相同的缩进将运行。 因此,在第一个片段中, else将在for的末尾运行,条件是没有发生中断,而在您编写的代码中, else位于for块中,并将在每个循环中运行,并且绑定到上面的if命令。

这是一种方法,请注意 1 不是质数:

def check_prime(x):
    if x >= 2:
        for y in range(2,x):
            if not (x % y):
                return 'not prime'
    else:
        return 'not prime'
    return 'prime'

check_prime(int(input('Enter number to check: ')))

Output:

Enter number to check:  31
'prime'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM