如何判断一个数字是否与红宝石一致?

时间:2014-09-26 12:28:52

标签: ruby math

我在网上看到了这个片段,同时正在研究如何测试一个数字是一个完美的正方形:

如果n是一个完美的正方形,则它与0,1或2 mod 4一致

我尝试用三元语句将其翻译成ruby代码(见下文),但它无法正常工作。

n % 4 == 0 && n % 4 == 1 && n % 4 == 2 ? true : false

你会怎么做?

4 个答案:

答案 0 :(得分:3)

你可以这样写:

n % 4 <= 2

答案 1 :(得分:3)

你的剪辑说“ ...与0,1 2 mod 4”是一致的,但你正在使用&&。将其更改为||会修复您的表达式:

n % 4 == 0 || n % 4 == 1 || n % 4 == 2 ? true : false

三元语句是多余的,因为您已经有一个布尔结果。它相当于:

n % 4 == 0 || n % 4 == 1 || n % 4 == 2

此外n % 4会为任何0返回123n,因此它也可以表示为:

n % 4 <= 2  # because 0, 1, 2 are less or equal to 2
n % 4 < 3   # because 0, 1, 2 are less than 3 
n % 4 != 3  # because 0, 1, 2 are not 3

答案 2 :(得分:0)

您可以通过以下方式接近

n % 4 < = 2

答案 3 :(得分:-1)

试试这个:

(0..2).include?(n % 4)