Skip to content

Instantly share code, notes, and snippets.

@junichiro
Created January 28, 2015 02:51
Show Gist options
  • Save junichiro/649b7e0ab8199febc181 to your computer and use it in GitHub Desktop.
Save junichiro/649b7e0ab8199febc181 to your computer and use it in GitHub Desktop.
code_iq: 1237
# -*- coding: utf-8 -*-
class code_iq:
prime_numbers = []
def do(self, keta = 4):
_min, _max = 10**(keta-1), 10**keta
self.prime_numbers = self.prime_numbers(int(_max ** 0.5) + 1)
for n in range(_min, _max):
primes = self.prime_decomposition(n)
x_cnt = len(primes) - 1
if self.sum_by_keta(n) == x_cnt:
print n
def sum_by_keta(self, n):
res = 0
for v in list(str(n)):
res = res + int(v)
return res
def prime_decomposition(self, n):
res = []
i, p = 0, 2
while p <= n:
p = self.prime_numbers[i]
if n % p == 0:
res.append(p)
n = n / p
else:
i = i + 1
if i >= len(self.prime_numbers):
res.append(n)
break
return res
def prime_numbers(self, n):
prime_numbers = []
numbers = range(2, n + 1)
for i in range(2, n + 1):
if i not in numbers:
continue
prime_numbers.append(i)
for j in range(i, n + 1, i):
if j in numbers:
numbers.remove(j)
return prime_numbers
if __name__ == '__main__':
code = code_iq()
code.do()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment