在網路上看到有人問,無聊就寫了一下,順便回憶一下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;
}