Je me demande s'il y a quelque chose que je peux poster sur Qiita. J'ai déterré le script quand j'ai essayé Project Euler il y a plus de 6 ans, donc Écris le
L'environnement d'exécution est le suivant. ruby 2.6.3p62 macOS Catalina 10.15.6 zsh
:zero::one::two::three::four::five::six::seven::eight::nine::ten:
Veuillez vous référer à ce qui suit pour ceux qui parlent du nombre. 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
Le résultat de l'exécution est le suivant.
% ruby divisor.rb
[1, 2, 4, 8]
[1, 2, 4, 8, 16, 32, 64, 128]
[1, 3, 5, 15, 823, 2469, 4115, 12345]
Nombre d'amis ... Je pense que c'est un bon nom avec beaucoup d'arrière. Comme nombres naturels a et b ・ Somme des fractions de a -a = b Et, ・ Somme des fractions de b-b = a Quand cela devient, il semble que a et b sont appelés nombres d'amitié. Voir ci-dessous pour une explication détaillée et précise. 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
Le résultat de l'exécution est le suivant.
% ruby number_amicable.rb
284
220
18416
17296
nil
En tant que nombre naturel a (1) Si la somme des fractions = a * 2, alors a est le nombre parfait. (2) Si la somme des fractions> a * 2, alors a est un nombre abondant. (3) Si la somme des fractions <a * 2, alors a est le nombre déficient. il semble que. Voir ci-dessous pour une explication détaillée et précise. 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
Le résultat de l'exécution est le suivant.
% ruby number_p_a_d.rb
"perfect number"
"abundant number"
"deficient number"
"deficient number"
Le nombre de fois est le même que vous lisez du haut ou du bas. Voir ci-dessous pour une explication détaillée et précise. 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?
Le résultat de l'exécution est le suivant.
% ruby number_palindrome.rb
false
true
true
c'est tout.
:zero::one::two::three::four::five::six::seven::eight::nine::ten:
Recommended Posts