论防止爆T的重要性:N相关孪生素数
生活随笔
收集整理的這篇文章主要介紹了
论防止爆T的重要性:N相关孪生素数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
N相關孿生素數
Time Limit: 1 Sec??Memory Limit: 128 MB?? 64bit IO Format: %lld
Description
如果A和B都是素數,而且A和B相差n,那么A和B是相差n的孿生素數。
請編寫程序根據輸入的n,輸出[L,R]范圍內的相差N的孿生素數的對數。
例如:n=4,L=1,R=20,相差4的孿生素數有(3,7),(7,11),(13,17)共3對,則輸出3。
注意:main函數已經給定(如下所示)。
? ? ? ? ? ?請將程序補充完整。
? ? ? ? ? ?提交時只需要提交自己補充的代碼部分,不需要提交給定的main函數的代碼部分。
#include<stdio.h>
int main()
{int n,L,R,t;while(scanf("%d%d%d",&n,&L,&R)!=EOF){t=f(n,L,R);printf("%d\n",t);}return 0;
}
?
Input
包含多組測試數據,每組測試數據占一行,每行3個正整數,分別代表n,L和R。其中n大于1,L大于1,R小于10000,L小于R。
?
Output
每組測試數據輸出占一行,每行輸出1個整數。
?
Sample Input
4 2 20
?
Sample Output
3
題目分析:
這題本來很簡單的。。但我居然爆了一次T,所以我決定還是寫下來……
判斷兩次質數就會爆T,但是加上break就好了。
以下給出的是錯誤代碼,正確代碼要在判斷質數的時候加上兩個break,就可以680MS過題~
當然,最保險的辦法是定義一個數組 a[10001] ,用數組的數值為 0 或者 1 來記錄這個數是否為質數。
最后:抄代碼是不對的啦~
#include<stdio.h>
int f(int n,int l,int r)
{int i,j,sum=0,f;for(i=l;i<=r-n;i++){f=0;for(j=2;j<i;j++){if(i%j==0){f=1;break;}}for(j=2;j<i+n;j++){if((i+n)%j==0){f=1;break;}}if(f==0)sum++;}return sum;
}
int main()
{int n,L,R,t;while(scanf("%d%d%d",&n,&L,&R)!=EOF){t=f(n,L,R);printf("%d\n",t);}return 0;
}
?
總結
以上是生活随笔為你收集整理的论防止爆T的重要性:N相关孪生素数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: b2照多少钱啊?
- 下一篇: 骑快马的下一句是什么啊?