NYOJ素数距離問題

2014 ワード

最近の話は少し分からないので、簡単な問題をしてまずコード能力を高めることにしました.
素数距離の問題
時間制限:3000 ms|メモリ制限:65535 KB
難易度:2
入力
第1行目は、試験データ群数N(0次のN行毎に整数M(0)を与える
しゅつりょく
各行は2つの整数A Bを出力し、Aは対応する試験データに最も近い素数を表し、Bはその間の距離を表す.
サンプル入力
3
6
8
10

サンプル出力
5 1
7 1
11 1

説明
次に、これらの整数が隣接する最も近い素数を出力し、そのピッチ長を出力するプログラムを書く必要があります.左右に等距離長素数があれば、左側の値と対応する距離を出力します.入力された整数自体が素数である場合、その素数自体が出力され、距離出力0が出力される.
実は、この問題は難しくなくて、素数の距離を計算して、まず、素数を判断して、表を打って素数のふるいを加える方法で、次は難点です.コードでは具体的に説明します.主に距離の判断で、いくつかの状況に分けて、自身が素数で、そうでなければ、その前が素数であるかどうかを判断して、しかもゼロより大きいです.その後ろは素数かどうか、もしそうなら距離を判断します.差が少ないのがこの考えだ.実はこれも私が1つのブログを見て書いたもので、emmm、必ず自分で多く実現して、多くコードの能力を高めなければなりません.
//               ,      
//             ,          ,     
//     ,          ·
#include
#include
#include
#include
#include
const int maxn=1000005;
int a[maxn];
using namespace std;
void isPrime()
{
  a[1]=1;//1     1
  for(int i=2;i*i>T;
  while(T--)
  {
    scanf("%d",&num);
    if(a[num]==0)//        
    {
      printf("%d 0
",num); } else { numup=numdown=num;// while(a[numup]!=0)// 0 numup++;// while(a[numdown]!=0&&numdown>0)// 0 0 numdown--;// if(numdown==0)// 0 { printf("%d %d
",numup,numup-num); } else if(numup-num>=num-numdown)// { printf("%d %d
",numdown,num-numdown); } else { printf("%d %d
",numup,numup-numdown); } } } return 0; }

実は大男のブログと差は多くなくて、自分で理解して書くことをマスターしてもう一度送って、私达の先生は1つの言叶を言ったことがあって、他の人のコードはあなたが自分で書くかデバッグしないで、他の人のヒントを見ないで过ごすことができて、同じく绝えず复习します.