描述
输入m,输出m到2m之间(包含m和2m)最大的素数减去最小的素数的结果。
输入
一个正整数n,表示测试案例的数量。
每组案例中有一个正整数m。
输出
针对每组案例,输出一个整数,表示m到2m之间(包含m和2m)最大的素数减去最小的素数的结果。每组案例输出完都要换行。
样例输入
2
1
7
样例输出
0
6
HINT
1到2之间最大的素数是2,最小的素数是2,2-2=0
7到14之间最大的素数是13,最小的素数是7,13-7=6
#include<iostream>
#include<cmath>
using namespace std;
bool isPrime(int a)//固定函数:判断一个数是否为素数
{
if (a < 2)
{
return false;
}
for (int i = 2; i <= sqrt(a); i++)
{
if (a % i == 0)
{
return false;
}
}
return true;
}
int main()
{
int n;
cin >>n;
while (n--)
{
int m,min,max;
cin >> m;
for (int i = m; i <= 2 * m; i++)
{
if (isPrime(i))
{
min = i;
break;
}
}
for (int i =2* m; i >= m; i--)
{
if(isPrime(i))
{
max = i;
break;
}
}
cout << max-min<< endl;
}
return 0;
}
总结:判断是否为素数时可用一个函数模板来偷懒;
main函数中判断条件是否为真时,记得写小括号!即isPrime(i)中的i一定不能漏!