这个题虽然看起来挺简单,但是想做好,但需要一定的功夫积累,才会觉得简单,这个是别人的代码,我觉得挺好的,贴过来,算掌握一种思路: #include <iostream> #include <cmath> using namespace std; int main() { //freopen("in.txt","r",stdin); int i,j,k,n,m=1000000000; int mi,mj,mk; cin>>n; for(i=1;i<=(int)(sqrt((double)n)+1);++i) { if(n%i==0) { for(j=1;j<=n/i;++j) { k=i*j; if(n%k==0) { k=n/k; if(i*j+i*k+j*k<m) { m=i*j+i*k+j*k; mi=i; mj=j; mk=k; } } } } } cout<<mi<<" "<<mj<<" "<<mk<<endl; return 0; } 用两个for循环,搞定三个数!