| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
- #include <bits/stdc++.h>
 
 - using namespace std;
 
 - typedef long long ll;
 
  
- int main()
 
 - {
 
 -     ll num =600851475143;
 
 -     ll maxv =0;
 
 -     for(ll i =2;i<int(sqrt(num))+1;++i){
 
 -         while(num%i==0){
 
 -             num/=i;
 
 -             maxv = max(maxv,i);
 
 -         }
 
 -     }
 
 -     cout<<maxv<<endl;
 
  
- }
 
 
  复制代码 
- #include <bits/stdc++.h>
 
 - using namespace std;
 
 - typedef long long ll;
 
  
- int main()
 
 - {
 
 -     ll num =600851475143;
 
 -     ll sc =int(sqrt(num))+1;
 
 -     ll maxv =0;
 
 -     for(ll i =2;i<sc;++i){
 
 -         while(num%i==0){
 
 -             num/=i;
 
 -             maxv = max(maxv,i);
 
 -         }
 
 -     }
 
 -     cout<<maxv<<endl;
 
  
- }
 
 
  复制代码 
 
为什么第二段输出的才是正确答案呢?第一段和第二段不是一个意思吗?
- #include <stdio.h>
 
  
- int main (){
 
 -         int i,j,k;
 
 -         for(i=0;i<i+2;i++){
 
 -                 printf("%d ",i);
 
 -         }
 
 - }
 
  复制代码
有没有点这个意思? 
i<int(sqrt(num))+1;
    
            num/=i; 
  
 
 
 |   
 
 
 
 |