C語言 取得質數問題

在網路上看到有人問,無聊就寫了一下,順便回憶一下C語言XD

題目是這樣:

輸入兩個正整數,兩數都要比1大,且都要小於100000000,兩數相減小於1000

取得兩數之間有多少個質數

首先先寫一個函數,來確定這是不是一個質數,最簡單的方法就是所有數字都給他除一次

int check(int num){

int i;

for(i=2;i<num;i++){

if(num%i==0){

return 1;//是質數

}

}

    return 0;//不是質數

}

然後再來寫主程式的流程,配合題目就是寫一個無窮迴圈,如果輸入數字不符合條件,就要重新輸入

輸入數字後再用迴圈,確認兩數之間有多少質數

以下完整程式碼

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {

int a,b,r,n=0,limit=0,count=0;

while(limit == 0){

printf(“請輸入兩個正整數:”);

scanf(“%d %d”,&a,&b);
n = b – a;

if(a>=1 && b >=1 && a <=100000000 && b <= 100000000 && n <= 1000)

   limit = 1;
else limit = 0;
}

//從b開始確定是不是質數到a,a-1是為了要連a也確認

while(a-1 != b){
   r = check(b);
   if(r == 1)count++;
   b–;
}
printf(“總共有%d個質數”,count);
return 0;
}
int check(int num){
    int i;
    for(i=2;i<num;i++){

if(num%i==0){

return 1;

}
}
    return 0;
}

Leave a Reply

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *