C++判断一个数是否是质数(极简版)

C++判断一个数是否是质数(极简版)

读者投稿

方法一(先别粘贴,注意看下面分析,切勿无脑CV):

#include

using namespace std;

int main()

{

int n;

cin>>n;

int i;

for(i=2;i

if(n%i==0){

cout<<"您输入的数不是质数!!" ;

break; //跳出整个for循环,程序结束

}

else

cout<

break;

}

return 0;

}

这个代码对吗?

这个是读者投稿的代码,我们来执行一下。

好像对啊,换个数试试。

好像还是不错。

再换个数呢?

等会你说什么?9和27是质数?

显然不是!!那么问题出在哪里,下面咱来一起分析一下。

#include

using namespace std;

int main()

{

int n;

cin>>n;

int i;

for(i=2;i

if(n%i==0){

cout<<"您输入的数不是质数!!" ;

break; //代码解析:如果是2的倍数,那么就会被判定为 不是质数

}

else

cout<

//否则被判断为是质数,比如说9啊,25啊,但是质数的概念不是这么来的,

//9可以拆为3x3,而27可以拆成3x9,这样并不符合质数的概念

break;

}

return 0;

}

正确的方法,

第一种:(读者投稿改正版,即原来的方法一。时间复杂度较高,不推荐)

#include

using namespace std;

int main()

{

int n;

cout<<"请输入一个数判断来其是否为质数:"<

cin>>n;

int i;

if(n == 1) cout<

if(n > 1) {

for(i=2;i

if(n%i==0){

cout<

return 0; //跳出整个for循环,程序结束

}

}

cout<

return 0;}

}

第二种:

#include

using namespace std;

int main()

{

int n=0;

cin>>n;

int i;

bool flag = true; //给flag标签设置布尔类型

if(n == 1) flag = false;//如果输入的数字是“1”,那么将flag设置为false

for(i=2;i

if(n%i==0){ //如果被除了1和它本身以外的数整除,则不是质数,并跳出循环

flag = false;

break; //跳出整个for循环,程序结束

}

}

if(flag)

cout<

else

cout<

return 0;

}

第三种:(引入数学符号----开方,注意导入数学包,时间复杂度较低,代码跑起来快)

为什么引用平方根,这是百度百科的说法。简单说,你比如27=3 x 9,其中介于是5和6之间,3小于根号27,而9大于根号27,得出27不是质数。再比如是介于2和3,没有除1和7本身外的其他两个因数相乘等于7,所以7是质数。

#include

#include

using namespace std;

int main()

{

int n;

cin >> n;

if(n==1) cout<

if(n>1){

for(int i = 2;i<=sqrt(n);i++)

{

if(n%i==0)

{

cout << n << "不是质数";

return 0;

}

}

cout << n << "是质数"<

return 0;

}

质数也叫做素数,是指一个数除1和它本身外,没有其他的除数。

什么?让我说人话?

好嘞哥儿。

比如:2 , 3 , 5 , 7属于质数;

而4 ,6 , 8不属于质数,

因为

如果还不明白欢迎撩我~

原创不易,各位客官,点个不要钱的赞吧。

得嘞,您慢走~

相关文章

JS占位符详解
365彩票手机版下载

JS占位符详解

📅 08-27 🔍 6642
2023 中国篮球世界杯热身赛赛程公布
Office365版本

2023 中国篮球世界杯热身赛赛程公布

📅 07-14 🔍 3613
鬼哭狼嚎的解释
bt365全程担保下载

鬼哭狼嚎的解释

📅 08-31 🔍 8971