素数的概念
要知道素数是什么,首先要知道因数是什么
因数
比如:
a * b = c
那么,a 和 b 就是 c 的因数
其实就是把倍数关系反过来
素数
所谓,素数,也可以叫做质数,是指一个数的因数只有 1 和它本身
判断素数
判断素数,其实就看它的因数是不是只有 1 和它本身就行了,它的因数一定小于等于它,所以直接从 1 到它本身遍历,只要不是 1 或它本身而且能被他除开就说明他是合数
这里从 2 遍历到它本身减 1,只要有能被他除开的,那么它就是合数
可以用一个函数来判断他是否是质数
bool is_prime(int x) {
for(int i = 2; i < x; ++i)
if(!(x % i))
return false;
return true;
}
总体程序设计
本身程序可以输入多组数据
多少呢,可以输入一个数 k,然后输入 k 个数据
对应每一个输入,可以对应一个输出,输出它是否是素数
怎么输出,大家可以自己决定
我这里输出的是 "n is a prime number" 或者 "n is not a prime number"
总体程序如下
#include <iostream>
using namespace std;
int k, n;
bool is_prime(int x) {
for(int i = 2; i < x; ++i)
if(!(x % i))
return false;
return true;
}
int main() {
cin >> k;
while(k-- && cin >> n)
if(is_prime(n))
cout << n << " is a prime number\n";
else
cout << n << " is not a prime number\n";
return 0;
}
运行结果:
正确!!!
尾声
如果这篇博客对您有帮助的话,就帮忙点个赞,加个关注!
最后,祝您在 OI 的路上一路顺风!!!
ヾ(≧∇≦)ノBye~Bye~
致谢!(`・ω・´)ゞ(`・ω・´)ゞ
感谢您能继续看,送给你一个更优的方法!
因为如果他是合数,那么一定还有一个几乘几等于他
其中一个数一定小于等于它的开方
它的开方乘以它的开方就是它本身,所以两个都比它的开方大的数乘起来一定大于它本身
这样,我们就可以遍历到它的开方
可以用数学函数中的 sqrt,这样就需要调用头文件
#include <math.h>
优化后的程序:
#include <iostream>
#include <math.h>
using namespace std;
int k, n;
bool is_prime(int x) {
for(int i = 2; i <= sqrt(x); ++i)
if(!(x % i))
return false;
return true;
}
int main() {
cin >> k;
while(k-- && cin >> n)
if(is_prime(n))
cout << n << " is a prime number\n";
else
cout << n << " is not a prime number\n";
return 0;
}
这回真的再见了!!!
ヾ( ̄▽ ̄)Bye~Bye~