1. 程式人生 > >ACM練習--(三)求質數因子

ACM練習--(三)求質數因子

程式設計求出質數因子

首先我們得知道什麼是質數因子

不懂的可以去百度這裡談談我的對質數因子的理解:

如果給定一個數(得判斷是不是1,如果是1的話不做任何處理,因為1沒有質數),求它的質數因子,那麼我們就開始用這個數對2開始整除(因為1是和所有數互質的),能整除則2就是一個質因子,這樣一直除到不能夠整除2為止,一共整除了多少次就有多少質因子 2 ,然後我們判斷這個數是不是小於等於3^2的(因為質數的平方一定小於等於這個數)開始用這個數重複的整除3,得到多少3,就有多少個質因子 3,然後判斷這個數是不是小於等於4^2的然後整除4.........以此類推

這裡貼出程式碼:

//將一個數n分解為若干個從小到大排列的質數的積
//求質數因子 
#include <iostream>
using namespace std;
int main()
{
    int n;
    cin >> n;
    if(n<2)return 0;                //1沒有質數 
    for(int i = 2;i*i<=n;i++)
    {        
        while(n%i==0)
        {
            n=n/i;
            cout << i ;
            if(n!=1)cout << " ";
        }
    }
    if(n!=1) cout << n;          //判斷最後剩下的n是否為質數
    return 0;
}