|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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;
- }
复制代码
|
|