在Python中使用for ... in range循环在一定间隔内找到质数

问题描述

我必须在Python中找到一定范围内的质数,并且必须在范围循环中使用for...。在过去的几天里,我一直在为此付出很多努力,而且它确实变得很累人。我有一个方法,但是当我将其放入代码中时,无论我如何努力,它都永远无法正常工作。无论如何,这是我的代码

def num_of_primes(n):
  count = 1
  primeNum = 0
  for count in range(2,n+1):
    if (n % count == 0 and count == n and (n % count != 0 and count != n)):
      primeNum += 1
  return primeNum

我想我知道为什么这行不通,但是我不知道如何解决它以便正确运行。哦,而且,我只需要使用一个功能(抱歉,忘记添加功能)即可。

解决方法

首先,在发布这样的问题之前,您应该认真研究。但是,我认为您是python的新手。因此,我正在实现一种计算效率极低的简单解决方案。您可以执行以下操作-

def is_prime(n):
    for i in range(2,int(n/2) + 1):
        if n%i == 0:
            return False
    return True


def num_of_primes(n):
    count = 1
    primeNum = 0
    
    for count in range(2,n+1):
        if is_prime(count):
            primeNum += 1
    return primeNum