冬雪雪冬 发表于 2018-3-7 09:02:43

Python:每日一题 159

本帖最后由 冬雪雪冬 于 2018-3-8 19:39 编辑

我们的玩法做了一下改变:

1. 楼主不再提供答案。
2. 请大家先独立思考”,再参考其他鱼油的解答,这样才有助于自己编程水平的提高。
3. 鼓励大家积极答题,奖励的期限为出题后24小时内。
4. 根据答案的质量给予1~3鱼币的奖励。

题目:
对于质数大家都很熟悉,从中可以发现某些质数乘以10再加1得到的仍然是质数,例如3, 3 * 10 + 1 = 31, 31仍是质数。当然这样的数还有不少,求出100以内这样的质数。

塔利班 发表于 2018-3-7 09:38:16

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)

nononoyes 发表于 2018-3-7 10:05:16

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:10:34

本帖最后由 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-7 10:23:05

本帖最后由 °蓝鲤歌蓝 于 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 =

tsembrace 发表于 2018-3-7 10:26:21

'''
对于质数大家都很熟悉,从中可以发现某些质数乘以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)

yunying12321 发表于 2018-3-7 10:45:13

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()
               


晓屁屁 发表于 2018-3-7 14:57:19

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)))

zhennan.zhang 发表于 2018-3-7 15:17:11

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:20:03

本帖最后由 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()

'''结果:'''

jfmlj 发表于 2018-3-7 15:30:28

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)



结果:

大头目 发表于 2018-3-7 15:31:39

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)

CXP 发表于 2018-3-7 15:44:30

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)

graceasyi 发表于 2018-3-7 16:13:44

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

BngThea 发表于 2018-3-7 16:19:58

def judge(n):
    for i in range(2,n//2+1):
      if not (n % i):
            return False
    else:
      return True

lst =
print()

纳兰小寒 发表于 2018-3-7 16:28:51

本帖最后由 纳兰小寒 于 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)

timeislife 发表于 2018-3-7 17:08:01

def isprime(n):
    for i in range(2,n//2):
      if n%i == 0:
            return False
    else:
      return True
primeList =
newPrimeList =

雪花飞舞 发表于 2018-3-7 17:24:32

# 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)

Lis 发表于 2018-3-7 17:57:28

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)

皮皮小发 发表于 2018-3-7 18:19:42

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
页: [1] 2 3 4
查看完整版本: Python:每日一题 159