王鹿其 发表于 2023-10-12 14:16:03

使用while语句和穷举法列出1到100之间的质数

{:10_277:}

isdkz 发表于 2023-10-12 14:16:13

以下是使用while语句和穷举法列出1到100之间的质数的代码:

num = 2
while num <= 100:
    is_prime = True
    i = 2
    while i < num:
      if num % i == 0:
            is_prime = False
            break
      i += 1
    if is_prime:
      print(num)
    num += 1


代码解释:

首先,我们从2开始循环到100。在每次循环中,我们将is_prime设置为True,表示当前数字是质数。然后,我们使用一个内部循环来检查当前数字是否可以被除1和它本身以外的其他数字整除。如果可以,那么当前数字不是质数,我们将is_prime设置为False,并立即退出内部循环。如果当前数字是质数,我们将其打印出来。最后,我们递增num的值,继续下一个循环。

希望这个代码可以帮助到您!

陶远航 发表于 2023-10-12 14:16:51

质数是一个大于1的自然数,除了1和它本身外不再有其他因数。在Python中,我们可以使用while循环和穷举法来找出1到100之间的所有质数。以下是一个简单的示例:

def find_primes(n):
    primes = []
    candidate = 2
    while candidate <= n:
      is_prime = True
      divisor = 2
      while divisor <= candidate / 2:
            if candidate % divisor == 0:
                is_prime = False
                break
            divisor += 1
      if is_prime:
            primes.append(candidate)
      candidate += 1
    return primes

print(find_primes(100))


在这个代码中,我们首先定义了一个函数find_primes(n),它会找出所有小于或等于n的质数。我们使用一个while循环来遍历所有的候选数(从2开始,因为1不是质数),对于每一个候选数,我们再使用一个内部的while循环来检查它是否可以被它的任何小于它一半的数整除。如果可以,那么它就不是质数,我们就跳出内部的循环并检查下一个候选数。如果不能,那么它就是质数,我们就把它添加到结果列表中。最后,我们打印出1到100之间的所有质数。

注意,这个算法的效率并不高,因为它需要对每一个候选数进行大量的除法操作。如果你需要找出更大范围内的质数,你可能需要使用更高效的算法,比如埃拉托斯特尼筛法。
请注意,本回答来自GPT-4
如果问题已经解决,请设置最佳答案

Mike_python小 发表于 2023-10-12 14:17:30

使用while语句和穷举法列出1到100之间的质数

在程序中,我们可以遍历1到100之间的所有数字,对于每个数字判断其是否为质数,如果是,则输出。判断质数可以使用穷举法,即从2开始遍历到该数字的平方根,如果存在能整除该数字的因子,则该数字不是质数。

代码如下:


#include <iostream>
#include <cmath>
using namespace std;

int main() {
    int i = 2;
    while (i <= 100) { // 遍历1到100之间的所有数字
      int j = 2;
      bool is_prime = true;
      while (j <= sqrt(i)) { // 判断是否为质数
            if (i % j == 0) {
                is_prime = false;
                break;
            }
            j++;
      }
      if (is_prime) { // 如果是质数,输出
            cout << i << endl;
      }
      i++;
    }

    return 0;
}


运行结果:


2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97


在上面的代码中,外部循环变量i用于遍历1到100之间的数字。内部循环变量j从2开始遍历到i的平方根,如果存在能整除i的因子,则i不是质数。使用sqrt函数获取i的平方根,可以避免不必要的循环。如果遍历完所有可能的因子后都没有找到可整除的因子,则i是质数,输出。

球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}
页: [1]
查看完整版本: 使用while语句和穷举法列出1到100之间的质数