qcyQCY 发表于 2020-9-23 15:26:03

Python循环

8.只能由1和它本身整除的整数称为素数;若一个素数从左向右读与从右向左读
是相同的数,则该素数为回文素数。编程求出2 ~ 1000 内的所有回文素数。


为什么我的会重复出现,没看明白


import math
for i in range(2,10001):
    for x in range(2,int(math.sqrt(i))+1):
      if i%x==0:
            break
      else:
            print(i)
         
         

baige 发表于 2020-9-23 15:26:04

import math

for i in range(2,10001):
    flag = True
    for x in range(2,int(math.sqrt(i))+1):
      if i%x==0:
            flag = False
            break
    if flag :
      print(i)

baige 发表于 2020-9-23 15:29:30

本帖最后由 baige 于 2020-9-23 15:32 编辑

你的内层循环有问题,比如i = 15时,内层循环从2开始,15%2!=0,所以就输出15,内层循环继续,只要i%x不等于就会输出i

fall_bernana 发表于 2020-9-23 15:31:18

你把print(i)改为print(i,x)你就明白了

qcyQCY 发表于 2020-9-23 15:59:56

fall_bernana 发表于 2020-9-23 15:31
你把print(i)改为print(i,x)你就明白了

牛逼

qcyQCY 发表于 2020-9-23 16:11:00

baige 发表于 2020-9-23 15:26


8.只能由1和它本身整除的整数称为素数;若一个素数从左向右读与从右向左读
是相同的数,则该素数为回文素数。编程求出2 ~ 1000 内的所有回文素数。

这个回文有没有什么好的办法

fall_bernana 发表于 2020-9-23 16:15:56

qcyQCY 发表于 2020-9-23 16:11
8.只能由1和它本身整除的整数称为素数;若一个素数从左向右读与从右向左读
是相同的数,则该素数为回文素 ...

import math

for i in range(2,10001):
    flag = True
    for x in range(2,int(math.sqrt(i))+1):
      if i%x==0:
            flag = False
            break
    if flag and str(i)==str(i)[::-1]:
      print(i)

qcyQCY 发表于 2020-9-23 16:27:41

fall_bernana 发表于 2020-9-23 16:15


为什么没有22 33 44 55 66 77 88 99

qcyQCY 发表于 2020-9-23 16:29:10

qcyQCY 发表于 2020-9-23 16:27
为什么没有22 33 44 55 66 77 88 99

我错了,我反应过来了

qcyQCY 发表于 2020-9-23 16:29:49

qcyQCY 发表于 2020-9-23 16:29
我错了,我反应过来了

刚刚入迷了,不好意思,谢谢啦
页: [1]
查看完整版本: Python循环