import numpy as np
# x = int(raw_input(prompt='please insert a number'))
x = 100
is_prime=0
for i in range(2,x):
if x % i == 0:
is_prime = 0
break
else:
is_prime = 1
if is_prime==0:
print "%d is not a prime" %x
if is_prime==1:
print "%d is a prime" %x
100 is not a prime
# x = int(raw_input(prompt='please insert a number'))
x = 100
is_prime=0
sum=0
for j in range(2,x):
for i in range(2,j):
if j % i == 0:
is_prime = 0
break
else:
is_prime = 1
sum += j
print sum
1060
def is_prime(x):
for i in range(2,int(x**(1/2.)+1)):
if x % i == 0:
is_prime_flag = 0
# print "it is not a prime"
break
else:
is_prime_flag = 1
# print "it is a prime"
return is_prime_flag
def prime_sum(num):
sum = 0
for sum_i in range (2,num):
if is_prime(sum_i):
sum += sum_i
return sum
def is_prime_v(x):
a = np.arange(1,x+1)
b = a.reshape(x,1)
c = a % b
d = np.where(c>0,0,1)
e = d.sum(axis = 0)
f = np.where(e!=2,0,1)
g = (f*a).sum()
return g
def judge_prime(x):
for i in range(2,int(x**(1/2.)+1)):
if x % i == 0:
is_prime_flag = 0
return False
return True
def sum_prime_v(y):
arr = np.arange(1,y+1)
v = np.vectorize(judge_prime)
return arr[v(arr)].sum()
注意:方法1的效率计算需要先封装为函数,后面的处理才比较方便
def method1(x):
is_prime=0
sum=0
for j in range(2,x):
for i in range(2,j):
if j % i == 0:
is_prime = 0
break
else:
is_prime = 1
sum += j
return sum
def printout(x):
x1 = method1(x)
x2 = prime_sum(x)
x3 = is_prime_v(x)
x4 = sum_prime_v(x)
print "方法1的结果是 %d" %x1
print "方法2的结果是 %d" %x2
print "方法3的结果是 %d" %x3
print "方法4的结果是 %d" %x4
printout(1000)
方法1的结果是 76127 方法2的结果是 76127 方法3的结果是 76127 方法4的结果是 76128
y = 10000
%timeit -n10 method1(y)
10 loops, best of 3: 1.73 s per loop
%timeit -n10 prime_sum(y)
10 loops, best of 3: 44.6 ms per loop
%timeit -n10 is_prime_v(y)
10 loops, best of 3: 2.65 s per loop
%timeit -n10 sum_prime_v(y)
10 loops, best of 3: 40.8 ms per loop