素數距離

題目描述:

現在給出你一些數,要求你寫出一個程序,輸出這些整數相鄰最近的素數,並輸出其相距長度。如果左右有等距離長度素數,則輸出左側的值及相應距離。
如果輸入的整數本身就是素數,則輸出該素數本身,距離輸出0

輸出:

第一行給出測試數據組數N(0<N<=10000)
接下來的N行每行有一個整數M(0<M<1000000)

輸入:

每行輸出兩個整數 A B
其中A表示離相應測試數據最近的素數,B表示其間的距離。

#include<iostream>
using namespace std;
bool f(int n)
{
int i;
if (n < 2)
return false;
for (i = 2; i*i <= n; i++)
{
if (n%i == 0)
return false;
}
if (i*i>n)
return true;
}
int main()
{
int n;
cin >> n;
int i,j,a,b;
for (i = 0; i < n; i++)
{
cin >> j;
for (a = j, b = j;; a--, b++)
{
if (f(a))
{
cout << a << ' ' << (j - a) << endl;
break;
}
else
{
if (f(b))
{
cout << b << ' ' << (b - j) << endl;
break;
}
}
}
}
} 



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章