問題描述 :
明明的爸爸是一位數學家,明明受他爸爸的影響從小就喜歡數學,經常向他爸爸學習或請教數學問題。一天,明明問他爸爸什麼是素數,明明的爸爸回答說:“首先,素數都是大於1的自然數;其次,素數是隻能被1和其本身整除的數。例如‘3’這個數,它只能被1和3這兩個整數整除,因此‘3’就是素數;但是‘4’就不是素數,因爲4除了能被1和4整除外,還能被2整除,因此‘4’就不是一個素數。”明明對於爸爸的回答很滿意,也很快明白了素數的定義。於是明明的爸爸就問明明:“明明,你現在知道了什麼是素數,那我現在給你一個整數區間,你能告訴我在這個區間裏,一共有多少個素數嗎?” 例如:一個區間爲[1,10],則在這個區間裏一共有2、3、5、7,總共4個素數。 明明想了想,覺得這很簡單,就說:“沒問題。”於是明明爸爸就給了明明一個很大的區間,這下明明有點犯難了,由於區間太大,一個一個算過了會很花時間。聰明的明明想到了你,你總是樂於助人。明明想讓你幫他寫一個程序,用來計算在某一個整數區間內一共有多少個素數。 明明的問題可以歸結爲:給你一個整數區間,求出在這個區間裏共有多少個素數。
輸入說明 :
你寫的程序要求從標準輸入設備中讀入測試數據作爲你所寫程序的輸入數據。標準輸入設備中有多組測試數據,每組測試數據僅有一行,每組測試數據有兩個正整數M,N(0 < M ≤ N ≤ 1000000),表示一個整數區間。每組測試數據與其後一組測試數據之間沒有任何空行,第一組測試數據前面以及最後一組測試數據後面也都沒有任何空行。
輸出說明 :
對於每一組測試數據,你寫的程序要求計算出一組相應的運算結果,並將每組運算結果作爲你所寫程序的輸出數據依次寫入到標準輸出設備中。每組運算結果爲一個整數,即區間[M, N]內一共有多少個素數。每組運算結果單獨形成一行數據,其行首和行尾都沒有任何空格,每組運算結果與其後一組運算結果之間沒有任何空行,第一組運算結果前面以及最後一組運算結果後面也都沒有任何空行。 注:通常,顯示屏爲標準輸出設備。
輸入範例 :
1 10
10 30
輸出範例 :
4
6
c源碼:
#include<stdio.h>
#include<math.h>
int fun(int n)//是否爲質數
{
int i;
if(n==1)
return 0;
for(i=2;i<=sqrt(n);i++)
{
if(n%i==0)
return 0;
}
return 1;
}
int main(){
int n,i,t,s,m;
while(scanf("%d%d",&n,&m)!=EOF){
if(n>m)
{t=m;m=n;n=t;}
s=0;
for(i=n;i<=m;i++)
{
if(fun(i)==1)
s++;
}
printf("%d\n",s);
}
return 0;
}