C程序检查一个数是否是质数?

C程序检查一个数是否是质数?

一个质数是一个只能被两个数(其本身和1)整除的数。一个数的因子是能够整除它的数。

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

一个不是质数的数是合数。合数是能够被多于两个数整除的数。

除了质数和合数之外,1既不是质数也不是合数,因为它只能被自身整除。

检查一个数是质数还是合数有两个条件需要检查:

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

2) 它只能有两个因子,即1和它本身。

如果这两个条件都满足,则我们可以说这个数是一个质数。

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

示例

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

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

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程