求助程序,题目是找出13195的最大质数因子.我这种做法没有输出,感到很奇怪
#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;
} #include <stdio.h>
void isBiggestPrimefactor(const __int64 n)
{
if (n < 2)
{
printf("数字太小\n");
}
else
{
for (size_t i = 1; i < n / 2 + 1; i++)
{
__int64 t = n / i, c = 0;
for (size_t j = 1; j < t / 2 + 1; j++)
{
if (t % j == 0)
{
c++;
if (c > 1)
{
break;
}
}
}
if (c == 1)
{
printf("最大质因数:%lld\n", t);
break;
}
}
}
}
int main(int argc, char const *argv[])
{
__int64 a = 2;
scanf("%lld", &a);
isBiggestPrimefactor(a);
return 0;
}
bin554385863 发表于 2020-3-22 00:20
我研究一下哈,目前还是C小白 慢慢来最快 我嗅到了鱼币的味道...{:10_301:} 哈哈 我也嗅到了鱼币的味道
页:
[1]