| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
#include<stdio.h> 
 
int main() 
{ 
        int i ; 
        long long int a,b; 
        
        a =13195; 
        b = 1; 
        
        for ( i = 2; i <= a; i++ ) 
        { 
                if ( (a % i ) ==0 ) 
                { 
                        b *= i; 
                        if (b==a) 
                        { 
                                printf("%d",i); 
        
                        } 
                        else 
                        { 
                                continue; 
                        } 
                } 
                else 
                { 
                        i +=1; 
                } 
        } 
 
        return 0; 
}
 本帖最后由 sunrise085 于 2020-3-21 22:45 编辑 
你对for循环有所误解,for循环括号内有  i++,不用你在循环体内再次写了,所以把后面的else删除就可以了 
在你的基础上帮你修改了。
 - #include<stdio.h>
 
 - int main()
 
 - {
 
 -         int i ;
 
 -         long long int a,b;
 
 -         a =13195;
 
 -         b = 1;
 
 -         for ( i = 2; i <= a; i++ )
 
 -         {
 
 -                 if ( (a % i ) ==0 )
 
 -                 {
 
 -                         b *= i;
 
 -                         if (b==a)
 
 -                         {
 
 -                                 printf("%d",i);
 
 -                         }
 
 -                         else
 
 -                                 continue;
 
 -                 }
 
 -         }
 
 -         return 0;
 
 - }
 
  复制代码
另外,你的程序好像有算法错误。对于你给出的这个数运算结果是对的。但是换一个数,结果就不一定对了。 
看看以下程序。
 - #include <stdio.h>
 
 - int main()
 
 - {
 
 -     long long int a = 840,result;
 
 -     for(result = 2;result <= a;result++)
 
 -     {
 
 -         while(a%result==0)
 
 -                 a/=result;
 
 -     }
 
 -     printf("%lld",result-1);
 
 -     return 0;
 
 - }
 
  复制代码 
 
 
 |   
 
 
 
 |