C程序检查数字是否为质数?

质数是一个只能被两个数字本身和一个整数整除的数字。数字的因数是可以将其相除的数字。

前十个质数的列表是2,3,5,7,11,13,17,23,29,31。

非质数是一个复合数。合成数是一个可以除以两个以上数字的数字。

那么Elser的质数和复合数为1,它既不是质数也不是复合数,因为它只能由自身来划分。

如何检查数字是否为质数或复数以检查数字是否为质数,应检查两个条件

1)它应该是大于1的整数。

2)它应该只有两个因素,即一个和数字本身。

如果满足这两个条件,那么我们可以说数字是质数。

在我们的程序中,我们将检查数字除以每个小于该数字的数字。如果小于给定数字的任何数字相除,则它不是素数。否则,它是质数。

让我们以两个数字为例,并使用此过程检查它们是否为质数。

Input − Number1 − 42

Output − 42 is not a prime number

逻辑-我们将42除以大于1且小于42的每个数字。

42/2 = 21,即42可以被2整除,这意味着42不是质数,因为它可以被另一个数整除。

Input − Number2 − 7

Output − 7 is a prime number

逻辑-我们将7除以大于1且小于7的每个数字。

7不能被2整除,因此代码将检查下一个数字,即3

7不能被3整除,因此代码将检查下一个数字,即4

7不能被4整除,因此代码将检查下一个数字,即5

7不能被5整除,因此代码将检查下一个数字,即6

7不能被6整除,这意味着7只能被1和7整除,这意味着7是质数。

看一下上面的逻辑,数字是1000加还是100000加,那么对于一个循环来说,程序将进行许多次迭代,此方法将花费大量的计算时间。因此,减少迭代次数必须是一种更好的方法。

一种优化的解决方案是仅使循环运行一半。这意味着如果数量为77,则循环将只运行到38。这将减少所需的迭代次数,因此我们将使用此算法来创建程序。

示例

#include <stdio.h>

int main() {

   int num = 33, flag = 0;

   for(int i=2 ; i < num/2 ; i++) {

      if(num%i == 0) {

         printf("%d is not a prime number", num);

         flag = 1;

         break;

      }

   }

   if(flag == 0) {

      printf("%d is a prime number", num);

   }

}

输出结果

33 is a prime number

以上是 C程序检查数字是否为质数? 的全部内容, 来源链接: utcz.com/z/327082.html

回到顶部