【问题标题】:How to find all prime numbers in a random numerical segment? [closed]如何在随机数字段中找到所有素数? [关闭]
【发布时间】:2021-01-16 01:07:37
【问题描述】:

我正在尝试制作一个程序,它将在随机数字段 [a,b] 中输出所有素数。 然而我还需要这个程序使用内部for循环以及for-else构造。我知道这个问题还有其他很好的解决方案,但我尝试只使用上述结构来解决这个问题。问题是它甚至不输出素数,而是输出段中的所有数字。

输入: a, b(其中 a,b 属于整数集合)

输出:段中的素数:x1,x2,...,xN

这是我的解决方案:

# prime nums
x = int(input())
y = int(input())
res = 'prime numbers: '
for i in range (x,y,1):
    for j in range (i-1,0,-1):
        if (i%j == 0): 
            pass
    else:
        res=res+str(i)
print(res)

提前致谢!

【问题讨论】:

  • 因为forelse 子句将始终执行,因为for 没有break 语句...阅读此构造in the docs。基本上将pass 更改为break。哦,你还需要更改range...每个数字都可以被1整除...更简单的方法是range(2, i)
  • 这能回答你的问题吗? Print series of prime numbers in python

标签: python


【解决方案1】:

我不明白你为什么要打印一串数字。您可以通过附加将其存储在列表中。但无论如何要回答你的问题:

方法一:

x = int(input())
y = int(input())
res = 'prime numbers: '
for a in range (x,y+1):
    if all(a % i for i in range(2, a)):
        res+=str(a)  
print(res)

要以您的方式解决它,只需将 0 替换为 1 作为结束范围,因为所有数字都可以被 1 整除并按照 Tomerikoo 的建议进行休息 方法二:

x = int(input())
y = int(input())
res = 'prime numbers: '
for i in range (x,y+1):
    for j in range (i-1,1,-1):
        if (i%j == 0): 
            break
    else:
        res=res+str(i)
print(res)

【讨论】:

    【解决方案2】:

    您可以尝试使用以下方法来利用基于 else 的素数检查。

    import math
    
    x = int(input())
    y = int(input()) 
    res = 'prime numbers are:'   
    for i in range (x,y):
        for j in range (2,int(math.sqrt(i))):
            if (i%j == 0): 
                break              
        else:
            res+=str(i)+","
    print(res)
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-27
      • 2012-10-31
      • 2018-09-04
      • 1970-01-01
      • 2020-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多