题目描述
将一个大于2的正整数分解为质因数的乘积。
输入
一个大于2的正整数。
输出
正整数=质因数*...*质因数
样例输入
90
样例输出
90=2*3*3*5
思路分析:一个合数总是可以有几个质数相乘得到,用循环从2开始一个一个遍历它的因子,
当得到一个因子(n%i==0时)后用n/=i的到新的n用while循环继续判断i是不是更新后n的因子,这样做是为了确保的得到的是质因子并且能够保证不漏掉因子,如果不用while循环而用if则更新i的值很繁琐,操作不当就会漏掉因子,,例如:180=4*3*3*5,当i=2时180%i==0,更新n=180/2,n==90,90%2==0,这样合数4就变成了2*2.
代码如下:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
cout<<n<<'=';
for(int i=2;i<=n;i++)
{
while(n%i==0)//思路分析中的while就是指这里
{
n/=i;
cout<<i;
if(n!=1)//n==1时也就是i==n时即最后一个因子,不用在输出'*'
cout<<'*';
}
}
return 0;
}
加油!!!