Python:每日一题 159
本帖最后由 冬雪雪冬 于 2018-3-8 19:39 编辑我们的玩法做了一下改变:
1. 楼主不再提供答案。
2. 请大家先独立思考”,再参考其他鱼油的解答,这样才有助于自己编程水平的提高。
3. 鼓励大家积极答题,奖励的期限为出题后24小时内。
4. 根据答案的质量给予1~3鱼币的奖励。
题目:
对于质数大家都很熟悉,从中可以发现某些质数乘以10再加1得到的仍然是质数,例如3, 3 * 10 + 1 = 31, 31仍是质数。当然这样的数还有不少,求出100以内这样的质数。 def isPrime(n):
if n <= 1:
return False
i = 2
while i*i <= n:
if n % i == 0:
return False
i += 1
return True
for n in range(100):
if isPrime(n) and isPrime(10*n+1):
print(n) def isPrime(num):
if num <=1:
return False
else:
for i in range(2,num):
if num%i == 0:
return False
else:
return True
for i in range(2,100):
if(isPrime(i)):
if(isPrime(i*10+1)):
print('%d 是质数且乘以10再加1得到的 %d 的仍然是质数'%(i,i*10+1))
3 是质数且乘以10再加1得到的 31 的仍然是质数
5 是质数且乘以10再加1得到的 51 的仍然是质数
7 是质数且乘以10再加1得到的 71 的仍然是质数
9 是质数且乘以10再加1得到的 91 的仍然是质数
11 是质数且乘以10再加1得到的 111 的仍然是质数
13 是质数且乘以10再加1得到的 131 的仍然是质数
15 是质数且乘以10再加1得到的 151 的仍然是质数
17 是质数且乘以10再加1得到的 171 的仍然是质数
19 是质数且乘以10再加1得到的 191 的仍然是质数
21 是质数且乘以10再加1得到的 211 的仍然是质数
23 是质数且乘以10再加1得到的 231 的仍然是质数
25 是质数且乘以10再加1得到的 251 的仍然是质数
27 是质数且乘以10再加1得到的 271 的仍然是质数
29 是质数且乘以10再加1得到的 291 的仍然是质数
31 是质数且乘以10再加1得到的 311 的仍然是质数
33 是质数且乘以10再加1得到的 331 的仍然是质数
35 是质数且乘以10再加1得到的 351 的仍然是质数
37 是质数且乘以10再加1得到的 371 的仍然是质数
39 是质数且乘以10再加1得到的 391 的仍然是质数
41 是质数且乘以10再加1得到的 411 的仍然是质数
43 是质数且乘以10再加1得到的 431 的仍然是质数
45 是质数且乘以10再加1得到的 451 的仍然是质数
47 是质数且乘以10再加1得到的 471 的仍然是质数
49 是质数且乘以10再加1得到的 491 的仍然是质数
51 是质数且乘以10再加1得到的 511 的仍然是质数
53 是质数且乘以10再加1得到的 531 的仍然是质数
55 是质数且乘以10再加1得到的 551 的仍然是质数
57 是质数且乘以10再加1得到的 571 的仍然是质数
59 是质数且乘以10再加1得到的 591 的仍然是质数
61 是质数且乘以10再加1得到的 611 的仍然是质数
63 是质数且乘以10再加1得到的 631 的仍然是质数
65 是质数且乘以10再加1得到的 651 的仍然是质数
67 是质数且乘以10再加1得到的 671 的仍然是质数
69 是质数且乘以10再加1得到的 691 的仍然是质数
71 是质数且乘以10再加1得到的 711 的仍然是质数
73 是质数且乘以10再加1得到的 731 的仍然是质数
75 是质数且乘以10再加1得到的 751 的仍然是质数
77 是质数且乘以10再加1得到的 771 的仍然是质数
79 是质数且乘以10再加1得到的 791 的仍然是质数
81 是质数且乘以10再加1得到的 811 的仍然是质数
83 是质数且乘以10再加1得到的 831 的仍然是质数
85 是质数且乘以10再加1得到的 851 的仍然是质数
87 是质数且乘以10再加1得到的 871 的仍然是质数
89 是质数且乘以10再加1得到的 891 的仍然是质数
91 是质数且乘以10再加1得到的 911 的仍然是质数
93 是质数且乘以10再加1得到的 931 的仍然是质数
95 是质数且乘以10再加1得到的 951 的仍然是质数
97 是质数且乘以10再加1得到的 971 的仍然是质数
99 是质数且乘以10再加1得到的 991 的仍然是质数 本帖最后由 LargeCat 于 2018-3-7 10:12 编辑
def is_Z(n):
for i in range(2, n):
if n%i==0:
return False
return True
for i in range(2, 100): #100以内我理解是不包括100, 如包括的话这里改成 range(2,101), 不影响程序.
if is_Z(i*10+1):
print(i, '*10+1=', i*10+1)
结果:
3 *10+1= 31
4 *10+1= 41
6 *10+1= 61
7 *10+1= 71
10 *10+1= 101
13 *10+1= 131
15 *10+1= 151
18 *10+1= 181
19 *10+1= 191
21 *10+1= 211
24 *10+1= 241
25 *10+1= 251
27 *10+1= 271
28 *10+1= 281
31 *10+1= 311
33 *10+1= 331
40 *10+1= 401
42 *10+1= 421
43 *10+1= 431
46 *10+1= 461
49 *10+1= 491
52 *10+1= 521
54 *10+1= 541
57 *10+1= 571
60 *10+1= 601
63 *10+1= 631
64 *10+1= 641
66 *10+1= 661
69 *10+1= 691
70 *10+1= 701
75 *10+1= 751
76 *10+1= 761
81 *10+1= 811
82 *10+1= 821
88 *10+1= 881
91 *10+1= 911
94 *10+1= 941
97 *10+1= 971
99 *10+1= 991 本帖最后由 °蓝鲤歌蓝 于 2018-3-8 19:53 编辑
def Num(num):
for j in range(2, int(num**0.5+1)):
if num%j == 0:
return False
else:
return True
List = '''
对于质数大家都很熟悉,从中可以发现某些质数乘以10再加1得到的仍然是质数,
例如3, 3 * 10 + 1 = 31, 31仍是质数。
当然这样的数还有不少,求出100以内这样的质数。
'''
def isPrime(n):
if n<2:
return False
elif n==2:
return True
else:
for i in range(2,n):
if n%i==0:
return False
else:
return True
for n in range(1,100):
if isPrime(n):
if isPrime(n*10+1):
print(n) def is_prime(pp):
for i in range(2, pp):
if pp % i == 0:
return False
else:
return pp
def main():
a = []
for n in range(1, 101):
if is_prime(n):
if is_prime(n * 10 + 1):
print(n)
if __name__ == '__main__':
main()
num = []
new_num = []
i=2
for i in range(2,100):
j=2
for j in range(2,i):
if not i%j:
break
else:
num.append(i)
for x in range(len(num)):
for y in range(2,num*10+1):
if (num*10+1)%y == 0:
new_num.append(num)
break
print(sorted(set(num).difference(new_num))) def zs(n):
list1 =[]
for i in range(1,n):
for j in range(1,n):
if i*j == n:
list1.append(i)
return list1
for numin range(2,101):
if bool(zs(num)) == False:
if bool(zs(num*10+1)) == False:
print num
本帖最后由 Chase_Kas 于 2018-3-7 15:22 编辑
def isprime(a):
for i in range(2, a):
if a/i == a//i:
return False
return True
print()
'''结果:''' list1=[]
list2=[]
for i in range(0,1002):
for j in range(2,1002):
if i==j:
list2.append(i)
elif i%j==0:
break
for i in list2:
if (i*10+1) in list2:
list1.append(i)
print(list1)
结果:
import math
def get_primes(input_list):
return (element for element in input_list if is_prime(element))
# 下面是 is_prime 的一种实现...
def is_prime(number):
if number > 1:
if number == 2:
return True
if number % 2 == 0:
return False
for current in range(3, int(math.sqrt(number) + 1), 2):
if number % current == 0:
return False
return True
return False
result1 = get_primes()
list1 = list(result1)
result2 = get_primes()
list2 = list(result2)
for i in list1:
if (i * 10 + 1) in list2:
print(i) num = []
i=2
for i in range(2,100):
j=2
for j in range(2,i):
if(i%j==0):
break
else:
num.append(i)
print(num) def is_prime(n):
for i in range(2, n):
if n % i == 0:
return False
else:
return True
for d in range(2, 100):
if is_prime(d):
if is_prime(d * 10 + 1):
print(d, end=' --> ')
print(d * 10 + 1)
结果:
3 --> 31
7 --> 71
13 --> 131
19 --> 191
31 --> 311
43 --> 431
97 --> 971 def judge(n):
for i in range(2,n//2+1):
if not (n % i):
return False
else:
return True
lst =
print() 本帖最后由 纳兰小寒 于 2018-3-8 11:37 编辑
def get_prime(x):
for a in range(1,100):
if prime(a):
x = a * 10 + 1
if prime(x):
print(a)
def prime(x):
y = int(x ** 0.5)
if x % 2 == 0:
return False
for a in range(2,y + 1):
if x % a == 0:
return False
else :
return True
num = int(input('请输入想要判断的数字范围最大值为:'))
get_prime(num)
def isprime(n):
for i in range(2,n//2):
if n%i == 0:
return False
else:
return True
primeList =
newPrimeList = # num = int(input('请输入一个大于1的整数:'))
def isprime_number(n):#判断是否是质数
m = n
i = 2
while(i < m):
if n % i == 0:
return 0
break
else:
m = n // i
i += 1
return 1
def find_prime_number(num):#找到符合要求的质数
for n in range(2, num):
if isprime_number(n) and isprime_number(n * 10 + 1):
print(n, end = ' ')
num = 100
if __name__ == '__main__':
print('%d以内乘以10加1仍为质数的质数有:' % num)
find_prime_number(num)
import math
def fun(num):
for i in range(2, int(math.sqrt(num) + 1)):
if not num % i:
return False
else:
return True
for i in range(1,10):
if fun(i):
if fun(10 * i + 1):
print(10 * i + 1) def isprime(n):
if n == 0 or n == 1:
return False
elif n == 2 or n == 3:
return True
elif n > 3:
for i inrange(3,n):
if n%i == 0:
return False
else:
return True
def newprime(n):
if isprime(n):
i = n*10 + 1
if isprime(i):
print(n)
for i in range(100):
newprime(i)
3
4
7
13
19
31
43
97