【问题标题】:A code that produce a number and Check if my produced of number is primes or not产生数字的代码并检查我产生的数字是否为素数
【发布时间】:2020-01-03 19:22:51
【问题描述】:

我编写了一个代码(在 python 中),它产生一个数字并检查该数字是否为素数,如果它是素数,它将打印它。 但是我的代码不断产生数字并打印出来,你能反馈一下我的方法有什么问题吗?

val = 10
for i in range (2, (val+1)//2):
    while (val+1) % i != 0 :
        print(val + 1)
        val = val *10

我想检查是否有任何数字(即十的倍数加一)是否被视为素数。

【问题讨论】:

  • 这能回答你的问题吗? Infinite range in my python prime finder?
  • 不,这不能回答我的问题。
  • 我不想找到素数,我想检查我的数字是否是素数。
  • 这更像是一个数学问题,你真的需要这个还是你正在做某种学校作业,这是一个非常广泛的讨论stackoverflow.com/questions/4114167/…,你的代码实际上是一个无限循环,因为 val = val *10 你永远不会到达终点
  • 不,我实际上需要一个答案,是的,如果我的假设是正确的,这将是一个无限循环,我的假设是{任何数字(即十的倍数加一)都被认为是素数数字与否}。

标签: python-3.x primes


【解决方案1】:

好吧,这措辞很奇怪,但我想我明白了,首先我们需要一个函数来检测素数

import math

def is_prime(n):
    if n == 2:
        return True
    if n % 2 == 0 or n <= 1:
        return False

    sqr = int(math.sqrt(n)) + 1

    for divisor in range(3, sqr, 2):
        if n % divisor == 0:
            return False
    return True

如果我的想法是正确的,你想在这个函数 x2 = x1 *10 + 1 之后测试一个数字是否是素数

所以这给了我们这个

val = 10
while val <10000:
  if is_prime(val + 1) == False:
    print(val+1)
    break

  val = val * 10

这不会永远持续下去,实际上会在第三个循环的 1000(1001) 处中断。

【讨论】:

【解决方案2】:

素数是只能被 x 和 1 整除的数字 x。因此,您应该开始遍历 2 和 x-1 之间的所有数字,并查看模数是否始终等于 0。

val = 10
for i in range (2, val-1):
    if val%i == 0:
        print(i)
        break

如果您想查看变量可整除的所有数字,您可以离开休息区。

【讨论】:

  • 感谢您的回答,但这不是我想要尝试的。我想检查是否有任何数字(即十的倍数加一)是否被视为素数
猜你喜欢
  • 2015-09-30
  • 1970-01-01
  • 2011-06-25
  • 1970-01-01
  • 2022-11-22
  • 2013-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多