Ich frage mich, ob ich irgendetwas an Qiita posten kann. Ich habe das Skript ausgegraben, als ich vor mehr als 6 Jahren Project Euler ausprobiert habe Schreib es
Die Ausführungsumgebung ist wie folgt. ruby 2.6.3p62 macOS Catalina 10.15.6 zsh
:zero::one::two::three::four::five::six::seven::eight::nine::ten:
Bitte beziehen Sie sich auf das Folgende für diejenigen, die über die Nummer sind. https://ja.wikipedia.org/wiki/約数
divisor.rb
def create_divisor (num)
divisor_ary = Array.new
partner_divisor_ary = Array.new
if num < 1 then
return nil
elsif num == 1 then
divisor_ary.push 1
else
i = 1
partner_divisor = 0
until i == partner_divisor do
if num % i == 0 then
divisor_ary.push i
partner_divisor = num / i
if partner_divisor != i then
partner_divisor_ary.unshift partner_divisor
else
break
end
end
i += 1
end
divisor_ary += partner_divisor_ary
end
return divisor_ary
end
class Integer
def divisor
return create_divisor(self)
end
end
p 8.divisor
p 128.divisor
p 12345.divisor
Das Ausführungsergebnis ist wie folgt.
% ruby divisor.rb
[1, 2, 4, 8]
[1, 2, 4, 8, 16, 32, 64, 128]
[1, 3, 5, 15, 823, 2469, 4115, 12345]
Anzahl der Freunde ... Ich denke, es ist ein guter Name mit viel Hintern. Als natürliche Zahlen a und b ・ Summe der Brüche von a -a = b Und, ・ Summe der Brüche von b-b = a Wenn es wird, scheinen a und b Freundschaftsnummern genannt zu werden. Unten finden Sie eine detaillierte und genaue Erklärung. https://ja.wikipedia.org/wiki/友愛数
number_amicable.rb
class Integer
def divisor
return create_divisor(self)
end
def amicable
amicable_number = nil
if self < 1 then
return amicable_number
end
divisor_ary = self.divisor
divisor_ary.pop
unless divisor_ary.empty? then
partner_number = divisor_ary.inject(:+)
if partner_number != self then
partner_divisor_ary = partner_number.divisor
partner_divisor_ary.pop
if partner_divisor_ary.inject(:+) == self then
amicable_number = partner_number
end
end
end
return amicable_number
end
end
p 220.amicable
p 284.amicable
p 17296.amicable
p 18416.amicable
p 200.amicable
Das Ausführungsergebnis ist wie folgt.
% ruby number_amicable.rb
284
220
18416
17296
nil
Als natürliche Zahl a (1) Wenn die Summe der Brüche = a * 2 ist, dann ist a die perfekte Zahl. (2) Wenn die Summe der Brüche> a * 2 ist, dann ist a eine reichlich vorhandene Zahl. (3) Wenn die Summe der Brüche <a * 2 ist, dann ist a die mangelhafte Zahl. wie es scheint. Unten finden Sie eine detaillierte und genaue Erklärung. https://ja.wikipedia.org/wiki/完全数 https://ja.wikipedia.org/wiki/過剰数 https://ja.wikipedia.org/wiki/不足数
number_p_a_d.rb
class Integer
def divisor
return create_divisor(self)
end
def compare_divisor_total
sum_divisor = self.divisor.inject(:+)
sum_divisor -= self
if sum_divisor > self then
return "abundant number"
elsif sum_divisor == self then
return "perfect number"
else
return "deficient number"
end
end
end
p 496.compare_divisor_total
p 20.compare_divisor_total
p 15.compare_divisor_total
p 1.compare_divisor_total
Das Ausführungsergebnis ist wie folgt.
% ruby number_p_a_d.rb
"perfect number"
"abundant number"
"deficient number"
"deficient number"
Die Anzahl der Male ist die gleiche Anzahl, unabhängig davon, ob Sie von oben oder unten lesen. Unten finden Sie eine detaillierte und genaue Erklärung. https://ja.wikipedia.org/wiki/回文数
number_palindrome.rb
class Integer
def palindrome?
str = self.to_s
if str[0, (str.length / 2).floor] == str.reverse[0, (str.length / 2).floor]
return true
else
return false
end
end
end
p 341.palindrome?
p 121.palindrome?
p 3456543.palindrome?
Das Ausführungsergebnis ist wie folgt.
% ruby number_palindrome.rb
false
true
true
das ist alles.
:zero::one::two::three::four::five::six::seven::eight::nine::ten:
Recommended Posts