在复习质因子分解时候,突然就掉进坑里了,怎么也想不通会存在大于根号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++;
}
}