【问题标题】:How to find primes (Python)如何找到素数(Python)
【发布时间】:2019-05-08 12:32:35
【问题描述】:

我是 python 编程的初学者,遇到了一个基本问题: 打印到给定数量的素数。

例如数字 100 之前的素数数量。

为什么我的代码不起作用?或者我的逻辑有什么问题?

def count_prime(num):
    newnumber = 0
    for x in num:
        if x%2 == 0:
            newnumber = newnumber + 1
    print(newnumber)

count_prime(100)

【问题讨论】:

  • def count_prime(num): newnumber = 0 for x in num: if x%2 == 0: newnumber = newnumber + 1 print(newnumber) count_prime(100)
  • 如果你想改变你的问题,只需编辑它
  • 您的程序试图计算有多少数字可以被 2 整除,这些数字明确地是素数。它甚至没有做到这一点,因为它试图迭代(循环)一个数字。
  • for x in num:num=100 将不起作用...您的意思是 for x in range(num) 吗?

标签: python primes


【解决方案1】:

测试一个数是否为素数的一种非常简单的方法(即计算速度慢)是简单地检查它是否可以被任何其他数字整除。

def is_prime(n):
    # If n is 0 or 1, it is not prime
    if n <= 1:
        return False
    # Check every number between 2 and n-1
    for i in range(2, n):
        # If n is divisible by i, then the remainder will be zero
        if n % i == 0:
            return False
    # Since n wasn't divisible by any other number, it must be prime
    return True

要打印所有素数,您可以简单地检查每个数字。

for i in range(num):
    if is_prime(i):
        print(i)

对于较大的num 值,此方法将非常慢。要查看一些更快的方法来检查数字的素数,您可以查看this question

【讨论】:

    【解决方案2】:
    num = int(input("Enter a number: "))  
    
    if num > 1:  
       for i in range(2,num):  
       if (num % i) == 0:  
           print(num,"is not a prime number")  
           print(i,"times",num//i,"is",num)  
           break  
       else:  
           print(num,"is a prime number")  
    
    else:  
       print(num,"is not a prime number")  
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-30
      • 2023-03-19
      • 1970-01-01
      • 2016-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多