素數探求(五) 任務6實現

2021-09-17 18:52:21 字數 1962 閱讀 8398

任務6

從鍵盤任意輸入乙個整數m,若m不是素數,則對m進行質因數分解,並將m以質因數從小到大順序排列的乘積形式輸出,否則輸出"it is a prime number"。例如,使用者輸入90時,程式輸出90=2335;使用者輸入17時,程式輸出90=2335;使用者輸入17時,程式輸出"it is a prime number"。

我們需要寫乙個獲得質因數的函式,然後再直接從main函式中呼叫即可。

pridivisor();函式實現

int

pridivisor

(int num)

else

if(num%n==

0&&flag==1)

if(num%n==0)

else}}

return0;

}

第一步:將鍵盤輸入的數字以引數的形式傳入,並呼叫之前寫的函式判斷該數字是否為素數

第二步:按照任務3的思路,判斷素數的函式在是素數是的返回值和非素數的返回值不同,以此作為依據獲取非素數的質因子。

第三步:用while迴圈獲得每次對應數值的最小質因子,並且每次確認乙個質因子 對應的m數值轉化為除以這個質因子的數值,為了確保同乙個質因子是m值的兩次整除數,加乙個if判斷。

第四步:按照任務4的格式化輸出思路,定義乙個標誌變數flag,當第一次輸出時,沒有乘號,並且將flag的值變為1,確保之後每次輸出乙個質因子的前面都輸出乙個乘號。

以下是**的實現

#include

#include

intgettemp

(int num)

;int

pridivisor

(int num)

;int

isprime1

(int num,

int temp)

;int

isprime2

(int num,

int temp)

;int

isprime3

(int num,

int temp)

;int

main()

// 任務1 2

// temp=gettemp(num);

// isprime1(num,temp);

// isprime2(num,temp);

// isprime3(num,temp);

// 任務3

// getprisum(num);

// 任務4

// getdiv(num);

// 任務5

// isperfect(num);

// 任務6

pridivisor

(num)

;return0;

}int

gettemp

(int num)

temp=temp;

return temp;

}int

pridivisor

(int num)

else

if(num%n==

0&&flag==1)

if(num%n==0)

else}}

return0;

}int

isprime1

(int num,

int temp)

else

if(num%n==

0&&n<=temp)

flag=1;

printf

("%d is a prime number\n"

,num);}

else

if(flag==0)

else

}

以上為乙個剛學c語言不久的小白所做的作業,如有不足請各位大牛多多包容

素數探求(二) 任務3實現

任務3 sqrt m m 的值我們只需要再寫乙個獲取素數之和的方法 getprisum int getprisum int num printf 1到 d的素數之和 d n 1 sum 將鍵盤輸入的數值以引數的形式輸入該函式,因為要獲得1 n之間所有素數之和,所以從3開始判斷乙個數是否是素數,只需呼...

素數探求(四) 任務5實現

任務5 請編寫乙個判斷完全數的函式isperfect 然後判斷從鍵盤輸入的整數是否是完全數 int isperfect int num n if divsum num else else 第一步 按照任務4的思路,先判斷鍵盤輸入的數是否素數,顯然素數不是完全數。第二步 再用while語句獲得該數 除...

第6周任務3

include include cmath using namespace std enum symmetricstyle 分別表示按x軸,y軸,原點對稱 class cpoint void distance cpoint p const 兩點之間的距離 一點是當前點,另一點為引數p void di...