读书人

分解质因数-zoj_1133

发布时间: 2012-11-09 10:18:47 作者: rapoo

分解质因数----zoj_1133

??????? 循环从2开始,到sqrt(a),每次判断a是否能被i整除,如果可以,则将i存如vector中,a/=i,然后--i,目的是继续判断i,因为a可能可以被i整除多次.到循环结束的时候,再将a存入vector中。

#include<iostream>#include<vector>#include<cmath>using namespace std;int getSum(int a){int res=0;int q=a;while(q!=0){res+=q%10;q/=10;}return res;}bool isSmith(int a){int q=a;int res1=getSum(a);int res2=0;vector<int>c;for(int i=2;i<=sqrt(a*1.0);i++){if(a%i==0){a/=i;c.push_back(i);//printf("%d ",i);i--;}}c.push_back(a);if(a==q){return false;}int size=c.size();for(int i=0;i<size;i++){res2+=getSum(c[i]);}//printf("%d\n",a);//cout<<res1<<" "<<res2<<endl;if(res1==res2)return true;elsereturn false;}int main(){int n;while(cin>>n&&n){for(int i=n+1;i<=2000000000;i++){if(isSmith(i)){cout<<i<<endl;break;}}}//if(isSmith(4937775))//cout<<"success"<<endl;return 0;}

??????

读书人网 >编程

热点推荐