质因子分解

在复习质因子分解时候,突然就掉进坑里了,怎么也想不通会存在大于根号N的质因子。

后来想明白了,发现自己真是好傻X。其实只要构造一下。比如说一个数的质因子是2和17,这个数就是

34,而34开根号小于6,满足条件= =为了这么个问题,我想了半天。。

下面是代码

#include<cmath>
bool IsPrime(int n)
{
    if(n<=1)return false;
    int sqr=(int)sqrt((double)n);
    for(int i=1;i<=sqr;i++){
        if(n%i==0)return false;
    }
    return true;
}
const int maxn=100;
int Prime[maxn],pnum;
bool p[maxn]={false};
void FindPrime(int r)
{
    for(int i=1;i<=r;i++){
        if(IsPrime(i)){
            Prime[pnum++]=i;
            p[i]=true;
        }
    }
}
struct factor{
    int x;
    int cnt;
};
factor factors[10];
int num=0;
void divide(int n){
    int sqr=(int)sqrt(1.0*n);
    for(int i=0;i<pnum&&Prime[i]<=sqr;i++){
        if(n%Prime[i]==0){
            factors[num].x=Prime[i];
            factors[num].cnt=0;
            while(n%Prime[i]==0){
                factors[num].cnt++;
                n/=Prime[i];
            }
            num++;
        }
    }
    if(n!=1){
        factors[num].x=n;
        factors[num].cnt=1;
        num++;
    }
}


原文地址:https://www.cnblogs.com/MalcolmMeng/p/8442971.html