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