质因数分解

Posted Eastruo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了质因数分解相关的知识,希望对你有一定的参考价值。

首先,你得先知道任意一个合数可以拆分成若干个素数之积

例如:24=2*2*2*3

然后就简单了,我是先取得一定量的素数(用之前写的素数筛),而后看能否整除,能就继续,不能就除下一个素数。

 

贴代码:

#include <iostream>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std;

int main()
{
    //先筛素数
    int num=0;
    int prime[10000];                   //用于存放素数
    int flag[10005];                    //用于判断i是否为素数
    memset(flag,0,sizeof(flag));
    for(int i=2;i<=10000;i++){
        if(flag[i]==0){
            prime[num++]=i;
            for(int j = i+i; j<=10000; j+=i)
                flag[j]=1;
        }
    }
    int n;                          //合数
    cin>>n;
    cout<<n<<"=";
    int p=0;
    bool q=0;                       //用于处理第一个输出的数
    while(n!=1){
        if(n%prime[p]==0){
            if(q==0){
                cout<<prime[p];
                q++;
            }
            else{
                cout<<"*"<<prime[p];
            }
            n=n/prime[p];
        }
        else
            p++;
    }
    return 0;
}

貌似有更优化的方法,尚未学习,等以后学了再更

 

以上是关于质因数分解的主要内容,如果未能解决你的问题,请参考以下文章

质因数分解

质因数分解

分解质因数

C语言,分解质因数

C语言,质因数分解

java 分解质因数 基础增强