在 C 中查找素数

问题描述

我目前正在解决这个问题,并计划不使用函数。 但是,我有一个问题。 为什么要将 1 初始化为标识符“prime”?

int main() { 
   int loop,number;
   int prime = 1;
   
   number = 11;

   for(loop = 2; loop < number; loop++) {
      if((number % loop) == 0) {
         prime = 0;
      }
   }

   if (prime == 1)
      printf("%d is prime number.",number);
   else
      printf("%d is not a prime number.",number);
   return 0;
}

解决方法

因为在条件 1 中使用了 prime == 1,因此 1 表示该数是素数。

如果您将条件写为 prime,则可以使用适合于 int 的任何非零数字作为素数标志(未找到除数标志)。例如,您可以使用 142200334555777999、{{ 1}}、2021

,

prime 只是一个标志。如果 prime 为 1,则表示 number 是素数。如果 prime 为 0,则表示 number 不是质数。

,

初始化为prime=1;,条件输出为

if (prime == 1)
      printf("%d is prime number.",number);

这里的逻辑是“首先假设当前处理的数字是素数”。
代码还有一个prime = 0;,在一定条件下循环执行。
所以有很多机会重置为“不是素数”。
这符合质数的概念。如果没有其他除数,它们就是正整数。
该代码查找除数。任何发现都意味着“不是素数”。
相反的逻辑,即假设非质数,然后寻找质数的原因是行不通的。

,

您现在可以查看您的代码。我只是将变量名称数据类型更改为布尔值。希望你现在能理解。

 int main() { 
 int loop,number;
 bool numberIsPrime = true;
 number = 11;
 for(loop = 2; loop < number; loop++) {
   if((number % loop) == 0) {
      numberIsPrime = false;
   }
  }

 if ( numberIsPrime == true)
   printf("%d is prime number.",number);
 else
   printf("%d is not a prime number.",number);
 return 0;
}