大大怪超人 发表于 2020-6-5 16:50:14

新手上路,小白求助

题目如下:验证尼科彻斯定理:任何一个大于 2 的整数的立方都可以表示成一串连续奇数的和,这些奇数一定是要连续的(比如 3^3 == 7 + 9 + 11)。.5R<i8C7!p
!{pNg*B;sQknh>Yq|y7_'+l
要求:用户输入某个整数,验证该数是否符合尼科彻斯定理,并将对应的式子打印出来。

源代码:

#include <stdio.h>

int main()
{
      int i, j, n, cubed, sum = 0;

      printf("请输入一个整数:");
      scanf("%d", &n);

      cubed = n * n * n;

      for (i = 1; i < cubed; i += 2)
      {
                for (j = i; j < cubed; j += 2)
                {
                        sum += j;
                        if (sum == cubed)
                        {
                              if (j - i > 4)
                              {
                                        printf("%d = %d + %d ... + %d\n", cubed, i, i+2, j);
                              }
                              else
                              {
                                        printf("%d = %d + %d + %d\n", cubed, i, i+2, i+4);
                              }
                              goto FINDIT;
                        }

                        if (sum > cubed)
                        {
                              sum = 0;
                              break;
                        }
                }
      }

FINDIT:

      return 0;
}


问题:
if (j - i > 4)
                              {
                                        printf("%d = %d + %d ... + %d\n", cubed, i, i+2, j);

这一段怎么理解,没有看懂,谢谢亲爱的鱼油们!
感谢亲爱的鱼油们!

xiaosi4081 发表于 2020-6-5 16:53:53

如果j-i大于4,就执行if里面的代码

大大怪超人 发表于 2020-6-5 16:54:13

xiaosi4081 发表于 2020-6-5 16:53
如果j-i大于4,就知道

突然看懂,谢谢!

xiaosi4081 发表于 2020-6-5 16:54:57

大大怪超人 发表于 2020-6-5 16:54
突然看懂,谢谢!

那就设个最佳吧

大大怪超人 发表于 2020-6-5 16:56:15

xiaosi4081 发表于 2020-6-5 16:54
那就设个最佳吧

{:10_277:}

xiaosi4081 发表于 2020-6-5 16:59:30

大大怪超人 发表于 2020-6-5 16:56


{:9_241:}

大大怪超人 发表于 2020-6-5 17:04:15

xiaosi4081 发表于 2020-6-5 16:59


OK
页: [1]
查看完整版本: 新手上路,小白求助