麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > Python > 正文

解決Python中回文數和質數的問題

2024-09-09 19:02:45
字體:
來源:轉載
供稿:網友

一、前言

今天學習視頻時課后作業是找出1000以內既是素數又是回文數的數,寫代碼這個很容易,結果一運行遇到了bug,輸出結果跟預期不一樣,調試了快30min,再接著一通搜索和回看視頻才發現問題所在。所以特地寫下來,方便以后查看。問題的關鍵是判斷素數過程中for…else的用法上(具體看后面代碼)

二、實現判斷素數的功能

質數(Prime number),又稱素數,指在大于1的自然數中,除了1和該數自身外,無法被其他自然數整除的數(也可定義為只有1與該數本身兩個因數的數)。via――Wikipedia

所以采用窮舉法只要在2~n-1的區間,沒有一個數能整除n,那么n就是素數。

對2-n-1區間進行合理優化,假設x*y=n(x<=y),那么當x和y相等時,x有最大值。即x=y=sqrt(n),所以x的區間就可以限制為2~sqrt(n)+1。還有疑問,可以在再多想想,紙上算一算。

因為這里要用到sqrt()方法,所以需要導入math模塊。

不多說,直接上代碼:

# 求解1000以內的所有素數,正確版本import mathnum = 2count = 0list_s = []max_d = 1000while num < max_d: length = int(math.sqrt(num)+1) # 對遍歷范圍進行合理優化 for i in range(2,length): # 注意從2開始  if num % i == 0:   break else: # 這里的else跟for對齊,而不是跟if,表示只有for順利執行時,else才執行  count += 1  list_s.append(num) # 存入列表 num += 1if count == 0: print(max_d,'以內沒有素數')else: print(max_d,'以內的素數有',count,'個,分別是:',list_s)

輸出結果:

這個代碼完全沒有問題,然后下面給出一個有問題的代碼:

# 求解40以內的所有素數,錯誤版本import mathnum = 2count = 0list_s = []max_d = 40while num < max_d: length = int(math.sqrt(num)+1) # 對遍歷范圍進行合理優化 for i in range(2,length): # 注意從2開始  if num % i == 0:   break  else: # 這里的else跟if對齊,會導致一個素數會被寫入int(math.sqrt(num))-1次,同時一些非素數也會被當做素數   count += 1   list_s.append(num) # 存入列表 num += 1if count == 0: print(max_d,'以內沒有素數')else: print(max_d,'以內的素數有',count,'個,分別是:',list_s)

輸出結果:

所以,一定要認真對待循環中else對齊問題。這個在解決素數問題中很重要。小結一下while…else和for…else

只有循環完所有次數,才會執行 else ,循環體中有continue存在,也不影響else執行。

一旦循環體中觸發了break ,就會阻止 else 語句塊的執行。

三、實現判斷回文數的功能

回文數即從左到右和從右到左一樣。如:12321。

方法:

把已知的num1數反過來,得到num2,如123變為321,采用//10 %10 *10等運算操作,其中還要借助一個臨時變量tmp

判斷如果num1 == num 2,則num1是回文數,反之不是

代碼如下:

# 求解1000以內的所有回文數num = 0 # 這里num從0開始list_h = []max_d = 10000count = 0 while num < max_d: tmp = num num_p = 0 while tmp != 0:  num_p = num_p*10 + tmp % 10  tmp //= 10 if num_p == num:  list_h.append(num)  count += 1 num += 1  if count == 0: print(max_d,'以內沒有回文數')else: print(max_d,'以內的回文數有',count,'個,分別是:',list_h)
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 午夜电影视频 | 精品久久久久久久久久久aⅴ | 欧美中文字幕一区二区三区亚洲 | 免费放黄网站在线播放 | 欧美精品一区二区三区在线 | 久久久久电影网站 | 久久久久久久久久91 | 一级做受毛片免费大片 | 欧美一级精品 | 国产一区二区精彩视频 | 免费观看高清视频网站 | 国产日韩一区二区三区在线观看 | 特级黄色影院 | 黄色特级片黄色特级片 | 久久国产精品久久久久久 | 成人免费看毛片 | 一本一本久久a久久精品综合小说 | 性感美女一级毛片 | 国产精品美女久久久久久不卡 | 毛片在线免费 | 最近中文字幕一区二区 | www国产成人免费观看视频 | 亚洲第五色综合网 | 斗破苍穹在线免费 | 亚洲性在线视频 | 久久sp| 成人福利免费在线观看 | 久草在线网址 | 免费一级肉体全黄毛片 | 91精品国产成人 | 中午字幕无线码一区2020 | 国产一区二区不卡 | 久艹在线视频 | 九草在线视频 | 色婷婷tv| 黄色小视频在线免费看 | 欧美亚洲国产成人 | www.成人免费 | 777sesese| 日本黄色a视频 | 九九精品免费 |