Euler Project解答1~5

"Euler1"

#-*- coding:utf-8 -*-
#Euler1
N=1000
if __name__=="__main__":
	list=[]
	for i in range(N):
		if (i % 3 == 0) or (i % 5==0):
			list.append(i)
	print sum(list)
max = 999
total = 0

1.upto(max) do |i|
	if (i % 3 == 0) or (i % 5 ==0)
		total = i + total
	end
end

print total

"Euler2"

#-*- coding:utf-8 -*-
#Euler2.py
A=1
B=2
N=4000000
list=[]
if __name__=="__main__":
	list.append(B)
	while B<N:
		T=B
		B=A+B
		A=T
		if B % 2 ==0: list.append(B)
	print sum(list)

#Ruby
#dynamic constant assignmentではまってしまった。

A = 1
B = 2
N = 4000000

def Fib(min1,min2,max)
	total = 0
	total = min2
	until min2 >= max
		transfer = min2
		min2 = min1 + min2
		min1 = transfer
		if min2 % 2 == 0
			total += min2
		end
	end
	return total
end

puts Fib(A,B,N)

#Euler3
#python

#-*- coding:utf-8 -*-
#Euler3
from numpy import *
N=600851475143
A=100000
list=[]
SUM=1
if __name__=="__main__":
	for i in range(2,A):
		if N % i==0:
			list.append(i)
			SUM=SUM*i
			if SUM == N: break
	print list[size(list)-1]

#ruby
#Ruby

N = 600851475143

def Search_primefactor(number)
	max = 0
	total = 1
	2.upto(number) do |i|
		if number % i ==0
			max = i
			total = total * i
			if total == number
				break
			end
		end
	end
	return max
end

puts Search_primefactor(N)
#-*- coding:utf-8 -*-
#Euler4
LIST=[]
TOTAL=0
if __name__=="__main__":
	for i in range(100,1000):
		for j in range(100,1000):
			A=i*j
			list=[]
			if A < 100000:
				for z in range(5):
						list.append(A % 10)
						A=A / 10
				if list[0]==list[4] and list[1]==list[3]:
					if TOTAL < i*j:
						TOTAL=i*j
		
			if A >= 100000:
				for z in range(6):
					list.append(A % 10)
					A=A/10
				if list[0]==list[5] and list[1]==list[4] and list[2]==list[3]:
					if TOTAL < i*j:
						TOTAL=i*j
	print TOTAL

"Euler 5"

#-*- coding:utf-8 -*-
#Euler5
TOTAL=1
N=20
def gcd(x,y):
	if y > 0:
         return gcd(y,x%y)
        return x
def lcm(x,y):
	return x*y/gcd(x,y)
if __name__=="__main__":
	for i in range(1,N+1):
		if TOTAL != lcm(i,TOTAL):
			TOTAL=lcm(i,TOTAL)
	print TOTAL
#Ruby-Euler5
N = 20

def gcd(x,y)
	if y > 0
		return gcd(y,x%y)
	end
	return x
end

def lcm(x,y)
	return x * y / gcd(x,y)
end

def Search_Number(number)
	total = 1
	1.upto(number) do |i|
		if total != lcm(i,total)
			total = lcm(i,total)
		end
	end
	return total
end

puts Search_Number(N)