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,那么程序将需要进行那么多次循环迭代,这种方法将需要大量的计算时间。因此,为了减少迭代次数,必须有更好的方法。
一个优化的解决方案是只运行for循环到一半。这意味着如果数字是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
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP