除数范围(Java)
我不太清楚我在这里遇到了什么问题,我希望有人能帮助我。这是我关于堆栈溢出的第一篇文章,我对编程比较陌生,所以我希望我不会冒犯这里的任何人 这里有一个提示(是的,这是一个项目Euler问题,请不要给出答案):1到20之间的每个数字可以整除的最小数字是多少 以下是我编写的代码:除数范围(Java),java,Java,我不太清楚我在这里遇到了什么问题,我希望有人能帮助我。这是我关于堆栈溢出的第一篇文章,我对编程比较陌生,所以我希望我不会冒犯这里的任何人 这里有一个提示(是的,这是一个项目Euler问题,请不要给出答案):1到20之间的每个数字可以整除的最小数字是多少 以下是我编写的代码: int target = 21; int divisor; boolean success = false; while (!success) { for (divis
int target = 21;
int divisor;
boolean success = false;
while (!success)
{
for (divisor = 1; divisor < 21; divisor++)
{
if (target % divisor != 0)
{
break;
}
else
{
if (divisor == 20)
{
success = true;
}
}
target++;
}
}
System.out.println(target);
int目标=21;
整数除数;
布尔成功=假;
而(!成功)
{
for(除数=1;除数<21;除数++)
{
如果(目标%除数!=0)
{
打破
}
其他的
{
如果(除数=20)
{
成功=真实;
}
}
目标++;
}
}
系统输出打印项次(目标);
我得到的答案(232792581)被p.E.标记为不正确。有人能告诉我我这里错了什么吗
谢谢大家 您的问题是
target++
放错了位置。按照现在的代码方式,这是在for
循环中调用的,在该循环中,您可以测试数字,也就是说,您可以在检查目标的同时更改目标。移动target++
语句,使其脱离for
循环,但仍在while
循环中。好吧,这个数字显然不能被二整除。也许可以把你的问题简化成你可以手工做的事情(比如第一个数字可以被5整除),看看你的算法哪里出了问题。提示:即使你找到了正确的答案,你也会做一些事情。如果(除数==20){success=true;}block,你想做什么,我注意到答案显然是错的,但我的问题更多的是问题的过程部分。我的过程在哪里?我要崩溃了吗?编辑:不,我知道你说我在“成功”之后做错了什么(答案中仍然添加了一个),但是给出的答案减去一也不正确。我会纠正这个错误,但它对我没有帮助…@pm77-1:我试图实现适当的循环中断,以便程序能够给出正确的答案。我仍然需要添加另一个(如果成功){break;}来中断for循环;整数除数;布尔成功=假;while(!success){target++;for(divisior=1;divisior<21;divisior++){//System.out.println(target);if(target%divisior!=0){break;}else{if(divisior==20){success=true;}}}}}System.out.println(target);这仍然不能给出正确的答案。看来(截至本次编辑时,我的收入已达100亿)这一结果没有答案。还有什么吗?我编译并运行了完全相同的代码,它运行得很好。我不知道。我想是的。