mathematics and me

We must know, We will know。 -----Hilbert

显示标签为“python”的博文。显示所有博文
显示标签为“python”的博文。显示所有博文

2014年5月8日星期四

Project Euler答题(6--10)

为防止帖子太长,故新开一贴,继续答题。
2014.5.8

第六题(python):

sum_of_squares = 0
sum_of_number = 0

for i in range(1, 101):
    sum_of_squares = sum_of_squares + i*i

for i in range(1, 101):
    sum_of_number = sum_of_number + i

print sum_of_number**2 - sum_of_squares

2014.5.8

第七题(python):

import math
import random
import sys   
sys.setrecursionlimit(1000000)

# def is_prime(num):
#     i = 2
#     isprime = True
#     while i <= int(math.sqrt(num)):
#         if num % i == 0:
#             isprime = False
#             break
#         i = i + 1
#     return isprime

# def is_prime(num):
#     if num % 2 == 0:
#         return False;
#     i = 3
#     isprime = True
#     while i <= int(math.sqrt(num)):
#         if num % i == 0:
#             isprime =  False
#             break;
#         i = i + 2
#     return isprime

# prime_list = [2, 3]
# def is_prime(num):
#     isprime = True
#     i = 0
#     while i < len(prime_list):
#         if num % prime_list[i] == 0:
#             isprime = False
#             break
#         i = i + 1
#     return isprime

prime_list = [2, 3]
def is_prime(num):
    isprime = True
    i = 0
    while i < len(prime_list) and prime_list[i] <= int(math.sqrt(num)):
        if num % prime_list[i] == 0:
            isprime = False
            break
        i = i + 1
    return isprime

# def is_prime(num):
#     f = 5
#     isprime = True
#     r = int(math.sqrt(num)) + 1
#     if num % 2 == 0 or num % 3 == 0:
#         return False
#     while f <= r:
#         if num % f == 0:
#             isprime = False
#         elif num % (f + 2) == 0:
#             isprime = False
#         f = f + 6
#     return isprime

# Wilson' theroem
# def factorial(n):
#     if (n == 1):
#         return n
#     else:
#         return n * factorial(n - 1)
# def is_prime(num):
#     if (factorial(num - 1) + 1) % num == 0:
#         return True
#     else:
#         return False

# Fermat's little theroem
# def FermatPrimalityTest(number):
#     for time in range(10):
#         randomNumber = random.randint(2, number - 1)
#         if ( pow(randomNumber, number-1, number) != 1 ):
#             return False
#     return True


number_of_prime = 2
num = 5
while True:
    if is_prime(num):
        prime_list.append(num)
        number_of_prime = number_of_prime + 1
        if number_of_prime == 40001:
            print num
            break
    # if is_prime(num) == False and FermatPrimalityTest(num) == True:
    #     print num
    num = num + 2