C/C++:判断素数

素数的定义

素数即质数,是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数

理解

  1. 设有一个自然数为A,如果A不是素数,那么它除了1和它本身以外会有至少一对自然数作为因数
  2. 这若干对自然数,每一对自然数中要么一大一小,要么相等。如果有相等的一对,则将这一对的数记为数字B,数字B根号A。其他每对一大一小的自然数中,大的应该大于B,小的应该小于B

举例

36 为非素数,其因数对有2、183、126、64、8;36开方得到6
可以发现2小于6,18大于63小于6,12大于64小于6,8大于6

代码实现

根据上面的理解,判断一个数是否为素数,只需要判断它是否有除了1和本身以外的其他因数对,同时因为因数对有其类对称性,我们只需要遍历不大于该数开方的数即可

#include 
using namespace std;
bool isPrime(int num){		//写一个bool函数判断num是否为素数
	for(int i = 2; i * i <= num; i++){	//遍历不大于num开方的数
		if(num % i == 0) return false;	//如果余数为0,说明i为因数,num不是素数
	}
	return true;			//遍历所有数后返回真,即num为素数
}
int main(){
	int num;
	cin >> num;
	if(isPrime(num))
		cout << num << "为素数"; 
	else
		cout << num << "不为素数";
	 
} 

你可能感兴趣的:(#,C的小tips)