鱼C论坛

 找回密码
 立即注册
楼主: 冬雪雪冬

[技术交流] Python:每日一题 159

[复制链接]
 楼主| 发表于 2018-3-9 20:19:43 | 显示全部楼层
solomonxian 发表于 2018-3-9 18:57
你这是用了质因数,效率比一路循环上去高啊,
之前jerry说有个最快的方法,忘了
我就顾着写得快··· ...

昨天评分到你那里刚好没有功力的,今天补上。
我的方法是用空间换取时间,能省下不少的无效循环。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-9 20:23:37 | 显示全部楼层
大于5的质数 其相邻的数肯定有一个为6的倍数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-9 20:58:54 | 显示全部楼层
qwc3000 发表于 2018-3-9 20:23
大于5的质数 其相邻的数肯定有一个为6的倍数

以前还真没注意这个规律,涨知识了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-9 22:07:54 | 显示全部楼层
def demo():
    i=0
    for i in range(100):
       i+=1
       value=i%2
       if value!=0:
            t=i

            value2=(t*10+1)

            if value2%2!=0:
                print('{0}---{1}'.format(t,value2))



demo()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-10 16:37:02 | 显示全部楼层
for x in range(2, 101):
    a = 0
    for y in range(1, x+1):
        if x % y == 0:
            a += 1
    if a == 2:
        c = x * 10 + 1
        d = 0
        for xx in range(1, c+1):
            if c % xx == 0:
                d += 1
        if d == 2:
            print(x)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-24 17:04:31 | 显示全部楼层
a=[2]
a1=[]
for number in range(2,101):
        for temp in range(2,number):
                if number % temp == 0:
                        break
                if temp ==number -1:
                        a.append(number)

for number in a:
        for temp in range(2,10*number +1):
                if (number * 10 + 1) % temp == 0:
                        break
                if temp == 10*number :
                        a1.append(10*number +1)
       
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-12 16:15:30 | 显示全部楼层
for i in range(2,100):
    for j in range(2, i):
        if not i % j:
            break
    else:
        n = i*10+1
        for x in range(2, n):
            if not n % x:
                break
        else:
            print(i)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-15 15:50:48 | 显示全部楼层
def fun159(x):
    result = []
    for i in range(2,x+1):
        for j in range(2,int(i**0.5)):
            if i % j == 0:
                break
        else:
            n = i*10 + 1
            for m in range(2,int(n**0.5)):
                if n % m == 0:
                    break
            else:
                result.append(i)
    return result

if __name__ == '__main__':
    print(fun159(100))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-19 20:37:59 | 显示全部楼层
def isPrime(num) :
        flag = len([i for i in range(2, num) if num % i == 0])
        if flag == 0 :
                return True
        else :
                return False

def findSpecialNum() :
        list1 = []
        for i in range(2, 101) :
                if isPrime(i) :
                        if isPrime(i * 10 + 1) :
                                list1.append(i)
        print(list1)

findSpecialNum()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-19 21:43:54 | 显示全部楼层
def prime(x):
    i=2
    while i <x:
        if x%i==0:
            break
        i+=1
    else:
            return True
            
for i in range(2,100):
    t=10*i+1
    if prime(t)==True and prime(i)==True:
            print(i,10*i+1)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-5-5 18:53:33 | 显示全部楼层
def is_prime(n):
    for i in range(2,int(pow(n,0.5))+1):
        if not n%i:
            return False
    else:
        return True


def fun159():
    prime_list = [2,3]
    list1 = []
    for i in range(4,10002):
        if is_prime(i):
            prime_list.append(i)

    for i in prime_list:
        if i < 100 and 10 * i + 1 in prime_list:
            list1.append(i)
    return list1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-4 17:22:07 | 显示全部楼层
def fun107():
    c=[]
    for i in range(2,100):
        for j in range(2,i//2):
            if i%j==0:
                break
        else:
            c.append(i)
    for k in c:
        for z in (2,k):
            if (k*10+1)/z==0:
                break
        else:
            print(k, '*10+1=', k*10+1)
2 *10+1= 21
3 *10+1= 31
4 *10+1= 41
5 *10+1= 51
7 *10+1= 71
11 *10+1= 111
13 *10+1= 131
17 *10+1= 171
19 *10+1= 191
23 *10+1= 231
29 *10+1= 291
31 *10+1= 311
37 *10+1= 371
41 *10+1= 411
43 *10+1= 431
47 *10+1= 471
53 *10+1= 531
59 *10+1= 591
61 *10+1= 611
67 *10+1= 671
71 *10+1= 711
73 *10+1= 731
79 *10+1= 791
83 *10+1= 831
89 *10+1= 891
97 *10+1= 971
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-29 23:14:27 | 显示全部楼层
def isprime(n):
    for i in range(2,n):
        if n%i == 0:
            return False
    return True
def f159(n):
    L=[]
    for i in range(2,n+1):
        if isprime(i) and isprime(i*10+1):
            L.append(i)
    return L
print(f159(100))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-10 14:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表