问题标题: 酷町堂:1704 分解质因数

0
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
我要回答