微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 C 中查找素数

如何解决在 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;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。