日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Prime Gap(POJ-3518)

發布時間:2025/3/17 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Prime Gap(POJ-3518) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Problem Description

The sequence of n ? 1 consecutive composite numbers (positive integers that are not prime and not equal to 1) lying between two successive prime numbers p and p + n is called a prime gap of length n. For example, ?24, 25, 26, 27, 28? between 23 and 29 is a prime gap of length 6.
Your mission is to write a program to calculate, for a given positive integer k, the length of the prime gap that contains k. For convenience, the length is considered 0 in case no prime gap contains k.

Input?

The input is a sequence of lines each of which contains a single positive integer. Each positive integer is greater than 1 and less than or equal to the 100000th prime number, which is 1299709. The end of the input is indicated by a line containing a single zero.

Output

The output should be composed of lines each of which contains a single non-negative integer. It is the length of the prime gap that contains the corresponding positive integer in the input if it is a composite number, or 0 otherwise. No other characters should occur in the output.

Sample Input

10
11
27
2
492170
0

Sample Output

4
0
6
0
114

題意:兩個素數 a、b 之間的區間 (a,b]?稱謂非素數區間,給出一個數 n,求 n 所在的非素數區間長度。

思路:先打表求素數,若 n 為素數,則長度為0,若 n 為合數,找出相鄰兩素數,長度為兩素數差

Source Program

#include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> #include<string> #include<cstdlib> #include<queue> #include<set> #include<map> #include<stack> #include<ctime> #include<vector> #define INF 0x3f3f3f3f #define PI acos(-1.0) #define N 5000005 #define MOD 1e9+7 #define E 1e-6 #define LL long long using namespace std; LL prime[N],cnt; bool bprime[N]; void make_prime() {memset(bprime,true,sizeof(bprime));bprime[0]=false;bprime[1]=false;for(LL i=2;i<=N;i++){if(bprime[i]){prime[cnt++]=i;for(LL j=i*i;j<=N;j+=i)bprime[j]=false;}} } int main() {make_prime();LL n;while(scanf("%lld",&n)!=EOF&&n){if(bprime[n])printf("0\n");else{for(LL i=0;i<cnt;i++)if(prime[i]<n&&prime[i+1]>n)printf("%lld\n",prime[i+1]-prime[i]);}}return 0; }

?

總結

以上是生活随笔為你收集整理的Prime Gap(POJ-3518)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。