首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找质数和非质数: Python

查找质数和非质数: Python
EN

Stack Overflow用户
提问于 2018-02-28 09:56:42
回答 2查看 2.3K关注 0票数 0

我正在尝试修改我的程序以创建两个空列表: prime和non_prime。并测试列表中的随机数是否是质数。如果这个数是质数,我想把它附加到质数列表中。如果没有,我希望能够将其添加到non_prime列表中。我试图从随机数列表中找到质数和非质数,但我得到了质数和非质数的相同输出。有谁可以帮我?

代码语言:javascript
复制
 import random

 def main():
      num = [random.randint(1,100) for _ in range (20)]
      print(num)

      lowest = min(num)
      print("The lowest number is: ", lowest)

      highest = max(num)
      print("The highest number is: ", highest)

     total = 0.0
     for value in num:
        total += value

     average = total / len(num)
     print("The average is: " , average)


     prime = [num]
     for a in range (1, 101):
        for b in range(2, a):
            if a % b == 0:
                break
        else:
            prime.append(a)
     print("The prime numbers are: " , prime)

    nonprime = [num]
    for x in range (1, 101):
        for y in range(2, x):
            if x % y == 0:
                break
        else:
            nonprime.append(x)
    print("The non prime numbers are: " , nonprime)
EN

回答 2

Stack Overflow用户

发布于 2018-02-28 10:23:46

您可以使用我的方便-花哨的单行素数检查器!

代码语言:javascript
复制
def is_prime (x): return True if x in [2,3] else not any (x % n == 0 for n in range (2, int (x ** 0.5) + 1))

现在,您可以在for循环中使用此函数:

代码语言:javascript
复制
for num in range (1, 101): 
    if is_prime (num): prime.append (x)
    else: nonprime.append (x)

顺便说一句,如果有人想帮助我改进这个功能(或者只是想了解它),请在下面发表评论!它会生成一个包含所有因子的列表,然后根据该列表的长度返回true或false (如果num为2或3,则返回True )。

票数 1
EN

Stack Overflow用户

发布于 2018-02-28 10:07:23

这只是一个优化技巧。在第一个循环中,你可以同时计算非质数和质数。

代码语言:javascript
复制
def isPrime(x):
    for i in range (sqrt (x)): # from i=2 till sqrt(x)
        if x % i == 0: return False
    return True

if isPrime (x): prime.append (x)
else: non_prime.append (x)

上面是筛选算法

票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49020827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档