素數探求(一) 題目及任務1 2實現

2021-09-17 18:33:13 字數 2449 閱讀 1897

任務1:

採用試商法,分別用goto語句、break語句和設定標誌變數並加強迴圈測試等三種方法編寫素數判斷函式isprime(),從鍵盤任意輸入乙個整數m,判斷m是否為素數,如果m是素數,則按"%d is a prime number\n"格式列印該數是素數,否則按"%d is not a prime number\n"格式列印該數不是素數。

任務2:

用數學的方法可以證明,不能被2~m

\sqrt m

m​(取整)之間的數整除的數,就是素數。根據這個性質,修改素數判斷函式isprime()的具體實現,程式設計完成任務1。

任務3:

從鍵盤任意輸入乙個整數n,程式設計計算並輸出1~n之間的所有素數之和。

任務4:

從鍵盤任意輸入乙個整數m,若m不是素數,則計算並輸出其所有的因子(不包括1),例如對於16,輸出2、4、8;否則輸出"no divisor! it is a prime number"。

任務5:

如果乙個正整數m的所有小於m的不同因子(包括1)加起來正好等於m本身,那麼稱它為完全數。例如6就是乙個完全數,因為6=1+2+3。請編寫乙個完全數的函式isperfect(),然後判斷從鍵盤輸入的整數是否是完全數。

任務6:

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

任務1、2 實現

#include

#include

intgettemp

(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);

}

第一步:我們先在main方法裡面實現輸入,並且用scanf的返回值來寫while語句,確保不會有錯誤輸入。

第二步:我們要獲得任務2中所說的m

\sqrt m

m​(取整)的值,這一步我們用gettemp(num);方法來實現,並且把m的值傳入再用temp獲得該方法的返回值m

\sqrt m

m​,具體實現之後再寫。

第三步:再呼叫需要我們寫的isprime(num,temp)方法,這裡需要我們傳入鍵盤輸入的數值和判斷需要的m

\sqrt m

m​的值。

int

gettemp

(int num)

temp=temp;

return temp;

}

利用for迴圈獲取m

\sqrt m

m​(取整)的值,並且將這個值返回給main函式中。

//goto

intisprime1

(int num,

int temp)

else

if(num%n==

0&&n<=temp)

printf

("%d is a prime number\n"

,num);}

else

}

利用goto語句來實現迴圈判斷。

注意要用大寫字母加冒號做下goto語句實現的跳轉位置的標記

//break

intisprime2

(int num,

int temp)

n++;}

if(n>temp)

}else

}

break語句實現

//flag

intisprime3

(int num,

int temp)}if

(flag==1)

else

}else

}

設定標誌變數並加強迴圈測試

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

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

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

素數探求(二) 任務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語句獲得該數 除...