0
已解决
http://judge.codingtang.com/problem/1704/
题目:
题目描述 Description
把一个合数分解成若干质因数成绩的形式(即求质因数的过程)叫做分解质因数。
输入描述 Input Description
一行:一个正整数n
输出描述 Output Description
一行:将n分解成质因数乘积的形式
样例输入 Sample Input
36
样例输出 Sample Output
36=2*2*3*3
数据范围及提示 Data Size & Hint
分解质因数只针对合数
哪位大神可以帮个忙
顺便讲解一下思路
感激不尽!!!!!!
毕小曼在2018-07-06 23:08:23追加了内容
求哪位大佬帮个忙
帮个忙嘛
0
已采纳
先输入这个将被分解的数,从题目中得出的大致意思和思路是:从2开始判断,如果它能被整除,就让他被2整除,然后继续拿2判断,当条件不满足时,就要从下一个因数考虑,比如样例的36,第一次发现他能被2整除,36除以2,变为18,发现还能被2整除,18除以2等于9,这时不能被整除,这个除数,因数就要往上判断,从3开始,发现能被整除,9除以3,变为3,发现还能被3整除,3除以3,变为1,直到输入的数被整除为1为止。
我们要做到在输入的数能被整除时,输出这个整除的数,
1.
cout<<t<<"=";先根据样例输出t=。
2.定义变量,一开始的除数i=2,while循环终止条件,即:t==1.
while(t!=1)
{
while(t%i==0)
{
cout<<i;
t/=i;
if(t!=1)
cout<<"*";
else
{
k=false;
break;
}
}
if(k==false)
break;
while(t%i!=0)
i++;
}
当t被i整除,下面的语句就一直执行,
if(t!=1)
cout<<"*";
意思是说,这个t如果还没被分解完,每个因数之间用*连接,如果t==1,t就被分解完,后面就不需要*了。
else//如果t==1
{
k=false;//bool型k一开始为true,如果t为1就不需要继续执行,在里部while跳出,k辅助外部while跳出
break;
}
}
if(k==false)
break;
最后一段:如果t不能被整除,i一直自增直到能被整除为止,
希望我的回答能帮助到您
0