首页 > 解决方案 > 在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);
                    }
                }
            }
        }
    }
}

标签: c

解决方案


因为您正在按递增顺序搜索数字。

一旦a3>n(where a3=a*a*a) 对于某些 positive 变为 true a,不a大于该值a将使条件为a3>nfalse (除非发生溢出)。

因此,您不需要检查更大的值并且使用break;是正确的。

我们可以对其余的循环说同样的话。


推荐阅读