问题标题: 1039 质数乘积取其大

1
0

0
已采纳
王浩然
王浩然
新手光能
新手光能
for(int i=n-1;i>=2;i--)
	{
		if(n%i==0)
		{
			max=i;
			break;
		}//判断质数,如果是直接跳出循环
	}
	cout<<n/max<<" "<<max<<" "<<max;

核心代码如上

王浩然在2018-01-20 10:43:40追加了内容

如果循环次数有点多的话,可以循环到n的平方根

1
曾凡一
曾凡一
新手光能
新手光能

直接for循环i从1到sqrt(n)(n的平方根,要调用函数#include<cmath>),然后判断n能不能整除n(if(i%n==0)),之后输出这个数与乘上这个数等于n的那个数,(cout<<i<<' '<<n/i)最后找两个数哪个最大直接输出n/i,因为前面的数是1到n的平方,肯定会小于另外一个数。

0
王子轩
王子轩
新手光能
新手光能

 

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

 

{

 

if (n%i==0)

 

{

 

cout<<i<<" "<<n/i<<" "<<n/i<<endl;

 

}

 

}

0
王睿卿
王睿卿
高级守护
高级守护

先找出a因数,再进行判断。见到质因数(请注意2),就判断a/质因数的商是不是质数,是则输出,不是继续判断。

王睿卿在2018-01-19 22:07:23追加了内容

在a和因数间插个的

0
夏天
夏天
中级守护
中级守护


 for (int i=2; i<=(int)sqrt(n); i++){
  if (n%i==0){
   cout<<i<<" "<<n/i<<" "<<n/i<<endl;
  }
 }

0
0
孙天博
孙天博
新手守护
新手守护
for (int i=2; i<=(int)(sqrt(n)); i++) 
    { 
        if (n%i==0) {    
            cout<<i<<" "<<n/i<<" "<<n/i<<endl;   
        }
    }

 

我要回答