【问题标题】:Numbers whose square root is whole number, without a math library平方根为整数的数字,没有数学库
【发布时间】:2015-05-25 11:00:30
【问题描述】:

我正在努力解决这个问题,我需要在控制台中找到并显示所有平方根为整数的数字,而不使用数学库。它在 C 中,所以我不能使用 math.h,而且我认为我实际上不需要像巴比伦塔之类的算法,或者我需要一个吗?

【问题讨论】:

  • 只打印 1², 2², 3², ...
  • 所有数字?真的吗?

标签: c algorithm numbers square-root


【解决方案1】:

可能的整数平方根有 0、1、2、3、4 等。因此,您所要做的就是计算每个自然数的平方并将其打印在屏幕上。

for (int i = 0; i < sth; i++) { 
    printf("%d\n", i*i);
}

打印所有这些数字也是不可能的,因为您尝试打印的集合是无限的,除非您希望您的程序无休止地工作(当然它也不会正常工作,因为您会得到整数溢出点)。

【讨论】:

  • printf("%lld ", i*1LL*i);
  • 分行打印更加一致,从问题来看,如果设置了限制,应该针对正方形进行测试。
【解决方案2】:

从 1 到 N 循环并对数字求平方?假设 N 是平方根的上限。

【讨论】:

    【解决方案3】:

    首先,您不能显示所有个数字,因为这是一个无限集。

    如果您只想显示一组有限的数字(长度为 X),只需从 0 循环到 (X - 1) 并打印 i*i。

    for(int i = 0; i < X; i++)
       printf("%d\n", i*i);
    

    【讨论】:

      猜你喜欢
      • 2015-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-22
      • 2013-11-26
      • 1970-01-01
      • 2015-12-28
      • 2013-03-01
      相关资源
      最近更新 更多