iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 26
1
自我挑戰組

一日一CPE系列 第 26

[Day26]1644: Prime Gap

  • 分享至 

  • xImage
  •  

考題日期:2016/12/20
題號:1644
星等:2
語言:C++


題目:
https://ithelp.ithome.com.tw/upload/images/20191012/20120937DJYFt61CeY.png


題意:
給予一個數 n,找出最近兩個質數的差,若 n 為質數,則輸出 0。


程式:

#include <iostream>
#include <math.h>
#define s 1300000

using namespace std;
int p[s] = {0};
void Prime()
{
    int i ,j ;
    p[0] = 1;
    p[1] = 1;
    for(i = 2; i < sqrt(s) ; i++)
    {
        if(p[i]==0)
        {
            for(j = i + i ; j < s ; j += i)
                p[j] = 1;
        }
    }
}
int main()
{
    int i,j,n;
    Prime();
    while(cin>>n && n!=0)
    {
        if(!p[n])
            cout<<"0"<<endl;
        else
        {
            for(i = n ; p[i] != 0 ; i++);
            for(j = n ; p[j] != 0 ; j--);
            cout<<i-j<<endl;
        }
    }
}


測資:
https://ithelp.ithome.com.tw/upload/images/20191012/20120937e83QG66L9a.png


上一篇
[Day25]488: Triangle Wave
下一篇
[Day27]10533: Digit Primes
系列文
一日一CPE30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言