正解質因數

2021-10-09 01:47:38 字數 1041 閱讀 5716

今天學習了python100例中的正解質因數

所以自己優化了一下,並且加入了對負數和小數的判斷

能跑起來,就是不知道邏輯對不對。

請各位點評。

#!/usr/bin/env python

# -*- coding:utf-8 -*-

# @ time :2020/8/10 22:38

# @ author :bt烤翅

"""題目:將乙個正整數分解質因數。例如:輸入90,列印出90=2*3*3*5。

程式分析:對n進行分解質因數,應先找到乙個最小的質數k,然後按下述步驟完成:

(1)如果這個質數恰等於n,則說明分解質因數的過程已經結束,列印出即可。

(2)如果n<>k,但n能被k整除,則應列印出k的值,並用n除以k的商,作為新的正整數你n,重複執行第一步。

(3)如果n不能被k整除,則用k+1作為k的值,重複執行第一步。"""

import sys

def reducenum(n):

if n < 2 or count == 1:

print('請輸入正整數!')

sys.exit() # 輸入小數或者小於2的數字會退出程式

global k

if n % k == 0:

print(k, ' ', end='')

if n != k:

reducenum(n / k) # 用n除以k的商,作為新的正整數n,重複執行第一步。

else:

k += 1

reducenum(n) # k+1作為k的值,重複執行第一步

x = input('輸入要查詢的數字:')

k = 2 # 最小的質數

count = x.count('.') # 判斷是否是小數

a = int(float(x)) # 轉換成整型

reducenum(a)

分解質因數

質因數概念 每個合數都可以寫成幾個質數相乘的形式,這幾個質數就都叫做這個合數的質因數。如果乙個質數是某個數的因數,那麼就說這個質數是這個數的質因數。而這個因數一定是乙個質數。演算法原理 先根據需要分解的合數生成乙個質數表。然後依次從小到大依次除合數,每次除之後都將儲存步驟。表達不好,還是看 吧 us...

分解質因數

分解質因數 問題描述 求出區間 a,b 中所有整數的質因數分解。輸入格式 輸入兩個整數a,b。輸出格式 每行輸出乙個數的分解,形如k a1 a2 a3.a1 a2 a3.k也是從小到大的 具體可看樣例 樣例輸入 3 10 樣例輸出 3 34 2 2 5 56 2 3 7 78 2 2 2 9 3 3...

分解質因數

大數的質因數分解一直以來是亟需解決的難題。本文從最基本的試除法開始,分解質因數的方法。下面的程式在開頭定義了乙個巨集opt,如果刪掉這個定義,就可以執行最原始的演算法。一 樸素演算法 include include include using namespace std define opt int...