c - 在c中的循环中中断而不是继续?
问题描述
在这里,在这个打印 ramanujans 数字的代码中,我很困惑它应该包含 continue 而不是 break,因为我们需要检查输入范围内的所有数字,如果我们使用 break 那么我们将退出循环而不是检查它与另一个号码。谁能向我解释一下,为什么要中断而不是继续?
#include<stdio.h>
main()
{
int n,a,b,c,d,a3,b3,c3,d3;
printf("Enter the limit");
scanf("%d",&n);
for(a=1;a<=n;a++)
{
a3=a*a*a;
if(a3>n)
break;
for(b=a;b<=n;b++)
{
b3=b*b*b;
if(a3+b3>n)
break;
for(c=a+1;c<=n;c++)
{
c3=c*c*c;
if(c3>a3+b3)
break;
for(d=c;d<=n;d++)
{
d3=d*d*d;
if(c3+d3>a3+b3)
break;
if(c3+d3==a3+b3)
{
printf("%d=%d^3+%d^3=%d^3+%d^3\n",(a3+b3),a,b,c,d);
}
}
}
}
}
}
解决方案
因为您正在按递增顺序搜索数字。
一旦a3>n
(where a3=a*a*a
) 对于某些 positive 变为 true a
,不a
大于该值a
将使条件为a3>n
false (除非发生溢出)。
因此,您不需要检查更大的值并且使用break;
是正确的。
我们可以对其余的循环说同样的话。
推荐阅读
- c++ - 将 Go 二进制文件加载到内存中并从 C++ 运行
- ios - 应用商店连接上的活动选项卡消失了
- reactjs - 根据页面加载时收到的道具处理条件
- javascript - https 获取请求上的 ENOTFOUND 问题
- javascript - 悬停元素Javascript时隐藏元素
- python - Altair/Streamlit 未读取多线图的列名
- wpf - WPF:尝试在子元素(ProgressBar)上使用模板绑定来绑定到父元素(按钮)的附加属性
- visual-studio - VS Code 一直在 Chromium 而不是 Chrome 中打开代码
- ios - 在 Xamarin 中的 iCloud 中存储文本文件
- c - 切换二叉树子树 SIGSEV