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