今天加群遇到了这个问题,百度有在线分解质因数的计算器,附上网址。http://www.atool.org/quality_factor.php?
但是,一个ACMer要会利用百度,而不是依赖百度,这种简单的代码,自己也可以轻松搞定。
#include <iostream> #include <math.h> using namespace std; int main() { //不需要分解质因数 1组数据直接暴力跑就行了 打表也简单 long long c=462377900; int cnt=0; int num[30005]={0},prime[30005]={0}; //第一种方法这里可以定义must 因为c一直在变 如果for里面用i<=sqrt(c) 循环跑到85就停了 我试过了 //第二种方法可以直接用sqrt(c) 但在后面一定要加上 if(c!=1) prime[cnt++]=c;之类的那些话 比如2*3*5*7 5可以在for里算出来 7会跳出来 long long must=sqrt(c); for(int i=2;i<=must;i++) { if(c%i==0) { while(c%i==0) { num[cnt]++; c/=i; } prime[cnt++]=i; } } /*cout<<c<<endl; if(c!=1) { prime[cnt]=c; num[cnt]=1; cnt++; }*/ cout<<prime[0]; num[0]--; for(int i=0;i<cnt;i++) { for(int j=0;j<num[i];j++) cout<<"*"<<prime[i]; } cout<<endl; return 0; }