zoukankan      html  css  js  c++  java
  • 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;
        //分解质因数的时候不需要循环到n,只需要i*i <= n就可以了
        //因为n即使存在比i大的因数(我们假设这个因数为b),也会存在比i小的因数a。并且a*b=n。
        //只要求出a,最后将n/a就可以求出b了。 
        for(int i = 2;i*i <= n;i++){
            //进while循环有2种可能:
            //第1种可能是到目前为止没有输出过i这个数 
            //第2种可能是已经输出过i这个数了,这个数可以再次被i整除 
            while(n % i == 0){
                n = n / i;//n除以这个数 
                cout << i << endl;//输出这个数 
            }
        }
        if(n != 1){//n这时等于因数b 
            cout << n << endl;
        }
        return 0;
    }
  • 相关阅读:
    分析函数
    Orcal函数
    归档日志
    JSP数据交互
    JSP
    接口
    JAVA修饰符
    QuicKHit
    Java 三章错题
    Java 多态
  • 原文地址:https://www.cnblogs.com/elisa02/p/12811075.html
Copyright © 2011-2022 走看看