设为首页 加入收藏

TOP

南阳ACM24-素数距离问题
2015-07-20 17:39:57 来源: 作者: 【 】 浏览:2
Tags:南阳 ACM24- 素数 距离 问题
/*
素数距离问题
时间限制:3000 ms | 内存限制:65535 KB
难度:2
描述
现在给出你一些数,要求你写出一个程序,输出这些整数相邻最近的素数,并输出其相距长度。如果左右
有等距离长度素数,则输出左侧的值及相应距离。
如果输入的整数本身就是素数,则输出该素数本身,距离输出0
输入
第一行给出测试数据组数N(0 接下来的N行每行有一个整数M(0 输出
每行输出两个整数 A B.
其中A表示离相应测试数据最近的素数,B表示其间的距离。
样例输入
3
6
8
10
样例输出
5 1
7 1
11 1
*/
//呵呵 ,用 c语言写的,

#include
#include


int isPrime(int n);


int main()
{
int i, n, num, temp1 = 0, temp2 = -1, flag = 0;
/* while(1)
{
scanf(%d, &n);


if (isPrime(n))
{
printf(is Prime , n);
}
else
{
printf(no );
}

}
*/

scanf(%d, &n);
while (n--)
{
scanf(%d, &num);
if (num == 1)
{
printf(2 1 );
continue;
}


for (i = 0; i < num; ++i)
{
flag++;
temp1 = num + i*temp2;
// printf(temp = %d %d , temp1, temp2);
temp2 = temp2 * (-1);
if ((temp1>2 && temp1%10%2==0) || (temp1>3 && temp1%3 == 0) || (temp1>5 && temp1%5==0))
{
if (flag % 2 != 0)
{
--i;
}
continue;
}
else
{
if (isPrime(temp1))
{
break;
}
}


if (flag % 2 != 0)
{
--i;
}
}

if (temp1 > num)
{
if (isPrime(num-(temp1-num)))
{
printf(%d %d , 2*num-temp1, temp1-num);
}
else
{
printf(%d %d , temp1, temp1-num);
}
}
else if (temp1 < num)
{
printf(%d %d , temp1, num-temp1);


}
else if (temp1 == num)
{
printf(%d 0 , num);
}
}


return 0;
}


int isPrime(int n)
{
int i = 2, a;


a = sqrt(n) + 1;
// printf(a = %d %lf , a, sqrt(3.0));
if (n == 2)
{
return 1;
}


for (i = 2; i <= a; ++i)
{
if (n % i == 0)
{

return 0;
}
}

return 1;

}

?

?

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇HDU 3639 Hawk-and-Chicken 下一篇wikioi 1002 搭桥

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·python数据分析岗的 (2025-12-25 10:02:21)
·python做数据分析需 (2025-12-25 10:02:19)
·成为一个优秀的pytho (2025-12-25 10:02:16)
·Java后端面试实习自 (2025-12-25 09:24:21)
·Java LTS版本有哪些 (2025-12-25 09:24:18)