51nod 2122 分解质因数

题目链接:http://class.51nod.com/Challenge/Problem.html#problemId=2122

一、题目描述

请你帮小瓜将正整数n分解质因数,并从小到大输出所有的质因数(如果一个质因数出现多次,则输出多次)。

输入

一行一个正整数n,保证1<=n<=10^8。

输出

若干行,每行表示n的一个质因数。按从小到大的顺序输出质因数。

输入样例

12

输出样例

2
2
3

二、代码
#include<cstdio>
#include<iostream>
using namespace std;
int main(){
    int n;
    cin >> n;
    for(int i = 2;i*i <= n;i++){//i*i <= n是因为数学的一些定理 
        //进while循环有2种可能:
        //第1种可能是到目前为止没有输出过i这个数 
        //第2种可能是已经输出过i这个数了,这个数可以再次被i整除 
        while(n % i == 0){
            n = n / i;//n除以这个数 
            cout << i << endl;//输出这个数 
        }
    }
    if(n != 1){ 
        cout << n << endl;
    }
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/elisa02/p/12811075.html
今日推荐