丨游戏灬需要
发表于 2018-7-28 00:51:15
本帖最后由 丨游戏灬需要 于 2018-7-29 07:32 编辑
from math import sqrt
def is_prime(n):
#直接拿百度的代码,因为自己想不出
if n == 1:
return False
for i in range(2, int(sqrt(n))+1):
if n % i == 0:
return False
return True
#参考
#result =
#此处为学习了3楼大神后的答案
def q(range_ ,start = 10 ):
p =
time = len(str(range_))-1
'''次数-1 指循环range_的位数次(例如百位就循环两次,例如:
range_为100(三位数),time就为2(循环两次),下面循环先以temp1(第一次为p[:])为
基底,每次循环拼接出一个十位数(指在十位数里符合条件的),然后extend给result
便完成这次循环)'''
result = []
temp = []
temp.extend(p)
result.extend(p)
#运行位数次的循环,每次在先前列表的每位质数中添加一个单位质数并判断是否为质数
#原本想写给几个位数就添加几个for循环的代码,但一是写不出,二是好像并不能达到结果
for i in range(time):
temp1 = temp[:]
temp = []
for i2 in temp1:
for i3 in p:
num = int(str(i2)+str(i3))
if is_prime(num) :#and num <= range_:#反正循环了一次,就顺便看看是不是超过范围
temp.append(num)
result.extend(temp)
result = list(filter(lambda x: range_ > x > start ,result))
return result
#现在可以随意规定范围了
print (q(500 ,start = 10))
llok4
发表于 2018-7-28 15:04:40
zh=[]
for i in range(10,100):
x=i%10
y=i//10
num=0
for j in range(2,i):
if i%j==0:
num+=1
if not num:
zh.append(i)
print(zh)
yesterday0931
发表于 2018-7-28 19:33:31
def is_prime_number(n):
if n==1:
return True
elif n<=0 or n==2:
return False
else:
for i in range(2, n):
if n % i == 0:
return False
else:
return True
prime_number=[]
for y in range(0,10):
if is_prime_number(y):
for x in range(0, 10):
z = x * 10 + y
if is_prime_number(x) and is_prime_number(z):
prime_number.append(z)
if z == y:
prime_number.append(y)
print(prime_number)
print(len(prime_number))
1422293891@qq.c
发表于 2018-7-28 21:15:32
import math;
def isPrime( num):
##两个较小数另外处理
if (num == 2 or num ==3):
return 1;
if(num%6 != 1 and num%6 !=5):
return 0;
temp = math.sqrt(num);
i = 5;
while(i < temp):
if((num % i == 0) or (num % (i+2) == 0)):
i+=6;
return 0;
return 1;
list_data = range(10,100);
list_prime = [];
counter = 0;
for number in list_data:
if((isPrime(number) == 1) and (isPrime(number/10) == 1)and(isPrime(number%10) == 1)):
list_prime.append(number);
counter += 1;
print ("0~100共计数字"+counter+"个,分别是:");
for data in list_prime:
print ( data);
程序还在调试中,还没有出结果
ErTian
发表于 2018-7-28 21:23:35
ErTian 发表于 2018-7-25 01:06
答案
class Test:
def __init__(self,nums):
self.nums=nums
def num_to_list(self,nums):
num_list = list(str(nums))
return num_list
def prime_num(self,num_list):
j = 2
#print(num_list)
for i in range(len(num_list)):
if num_list == '1' or num_list == '0':
num_list = -1
while j <= int(num_list)-1:
if int(num_list) % j == 0:
num_list = -1
break
else:
j +=1
#print(num_list)
return num_list
def list_to_num(self,prime):
#print(prime)
if -1 in prime:
pass
else:
result = int("".join(prime))
print(result)
def main(self):
for i in range(10,self.nums):
num_list = self.num_to_list(i)
prime = self.prime_num(num_list)
result = self.list_to_num(prime)
results = Test(33)
results.main()
子沙
发表于 2018-7-29 14:21:42
for i in range(10,100):
n=0
for j in range(2,i):
if i%j!=0:
n=n+1
if n==i-2:
m=0
for k in str(i):
if k in'2357':
m+=1
if m==2:
print(i,end=' ')
说语
发表于 2018-7-29 17:28:24
感谢鼓励!
claws0n
发表于 2018-7-29 18:09:30
prime_digits =
for n in range(20,80):
if ((n // 10) in prime_digits) and ((n % 10) in prime_digits):
for i in range(2, n):
if n % i == 0:
break
else:
print(n)
这是针对这道题写的.由于十位数与个位数都必须是质数,只需考虑{2,3,5,7}的排列组合,只有 16 个元素。当然,范围也可以缩小到 20~80
这里要继续判断这些数是否为质数。方法简单,所以不考虑写成函数。
喂猪专业户
发表于 2018-7-31 16:44:14
喂猪专业户 发表于 2018-7-25 09:54
自己写了一个,提示最后一个判断是int和nonetype做与运算,问题出在哪
原来如此,已经解决了
学学看看
发表于 2018-8-9 20:38:56
pushpush
发表于 2018-10-17 01:06:54
list1 =
for i in list1:
for j in list1:
digit = i * 10 + j
flag = 0
for p in range(2, digit):
if digit % p == 0:
flag = 1
if flag == 0:
print digit
foxiangzun
发表于 2019-2-14 19:28:21
def isPrime(num) :
flag = 0
for i in range(2, int(pow(num, 0.5)) + 1) :
if num % i == 0 :
flag += 1
if flag == 0 :
return True
else :
return False
def getNum() :
list1 =
for i in list1[:] :
if (not isPrime(i)) or (not isPrime(i // 10)) or (not isPrime(i % 10)) :
list1.remove(i)
print(list1)
getNum()
answer如约
发表于 2019-2-15 11:42:01
本帖最后由 answer如约 于 2019-2-15 12:02 编辑
思路1:一个是 生成两位数的质数 判断 十位各位是否为质数
思路2: 找出10以内的质数,两个质数组合成为两位数,判断组合后数字在不在100以内的质数表中
def _odd_(n): # 质数生成函数
prime = []
prime1 = []
for i in range(n+1):
prime.append(True)
for i in range(2,n+1):
if prime:
prime1.append(i)
j = i+i
while j<= n:
prime = False
j += i
return prime1
_list_ = []
for i in _odd_(10): #将不重复的质数组合成两位数
for j in _odd_(10):
_list_.append(i*10+j)
for i in _list_: #找出组合后为质数的两位数
if i in _odd_(100) :
print(i)
小贤啊哦
发表于 2020-6-16 19:55:55
def fun128():
temp=[]
for i in range(2,101):
flag=1
for j in range(2,i//2+1):
if i%j==0:
flag=0
break
if flag:
temp.append(i)
for k in temp:
a=k//10
b=k%10
if a in temp and b in temp:
print(k,end=' ')
23 37 53 73