任務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...