南阳ACM24-素数距离问题
来源:互联网 发布:育知同创主要培训什么 编辑:程序博客网 时间:2024/05/19 07:10
/*
素数距离问题
时间限制:3000 ms | 内存限制:65535 KB
难度:2
描述
现在给出你一些数,要求你写出一个程序,输出这些整数相邻最近的素数,并输出其相距长度。如果左右
有等距离长度素数,则输出左侧的值及相应距离。
如果输入的整数本身就是素数,则输出该素数本身,距离输出0
输入
第一行给出测试数据组数N(0<N<=10000)
接下来的N行每行有一个整数M(0<M<1000000),
输出
每行输出两个整数 A B.
其中A表示离相应测试数据最近的素数,B表示其间的距离。
样例输入
3
6
8
10
样例输出
5 1
7 1
11 1
*/
//呵呵 ,用c语言写的,
#include <stdio.h>
#include <math.h>
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", n);
}
else
{
printf("no\n");
}
}
*/
scanf("%d", &n);
while (n--)
{
scanf("%d", &num);
if (num == 1)
{
printf("2 1\n");
continue;
}
for (i = 0; i < num; ++i)
{
flag++;
temp1 = num + i*temp2;
// printf("temp = %d %d\n", 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\n", 2*num-temp1, temp1-num);
}
else
{
printf("%d %d\n", temp1, temp1-num);
}
}
else if (temp1 < num)
{
printf("%d %d\n", temp1, num-temp1);
}
else if (temp1 == num)
{
printf("%d 0\n", num);
}
}
return 0;
}
int isPrime(int n)
{
int i = 2, a;
a = sqrt(n) + 1;
// printf("a = %d %lf\n", a, sqrt(3.0));
if (n == 2)
{
return 1;
}
for (i = 2; i <= a; ++i)
{
if (n % i == 0)
{
return 0;
}
}
return 1;
素数距离问题
时间限制:3000 ms | 内存限制:65535 KB
难度:2
描述
现在给出你一些数,要求你写出一个程序,输出这些整数相邻最近的素数,并输出其相距长度。如果左右
有等距离长度素数,则输出左侧的值及相应距离。
如果输入的整数本身就是素数,则输出该素数本身,距离输出0
输入
第一行给出测试数据组数N(0<N<=10000)
接下来的N行每行有一个整数M(0<M<1000000),
输出
每行输出两个整数 A B.
其中A表示离相应测试数据最近的素数,B表示其间的距离。
样例输入
3
6
8
10
样例输出
5 1
7 1
11 1
*/
//呵呵 ,用c语言写的,
#include <stdio.h>
#include <math.h>
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", n);
}
else
{
printf("no\n");
}
}
*/
scanf("%d", &n);
while (n--)
{
scanf("%d", &num);
if (num == 1)
{
printf("2 1\n");
continue;
}
for (i = 0; i < num; ++i)
{
flag++;
temp1 = num + i*temp2;
// printf("temp = %d %d\n", 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\n", 2*num-temp1, temp1-num);
}
else
{
printf("%d %d\n", temp1, temp1-num);
}
}
else if (temp1 < num)
{
printf("%d %d\n", temp1, num-temp1);
}
else if (temp1 == num)
{
printf("%d 0\n", num);
}
}
return 0;
}
int isPrime(int n)
{
int i = 2, a;
a = sqrt(n) + 1;
// printf("a = %d %lf\n", a, sqrt(3.0));
if (n == 2)
{
return 1;
}
for (i = 2; i <= a; ++i)
{
if (n % i == 0)
{
return 0;
}
}
return 1;
}
作者:http://blog.csdn.net/lp310018931
0 0
- 南阳ACM24-素数距离问题
- 南阳理工:素数距离问题
- 南阳-24-素数距离问题
- 南阳OJ~~素数距离问题
- 素数距离问题(南阳acm)
- 南阳oj--素数距离问题
- 南阳理工OJ_素数距离问题
- 素数距离问题(南阳24)
- 南阳oj 题目24 素数距离问题
- 南阳题目24-素数距离问题
- 南阳OJ 题目24:素数距离问题
- C语言 南阳理工ACM 24.素数距离问题
- 南阳理工ACM 题目24 素数距离问题
- 南阳ACM22-素数求和问题
- 南阳OJ~~素数求和问题
- 南阳oj 素数求和问题
- 素数距离问题
- NYOJ - 素数距离问题
- Notification和Activity交互
- 最优服务次序问题
- chrome浏览器收藏夹转到opera浏览器
- cocos2d-x基本知识点:粒子系统
- 贪心算法解汽车加油问题
- 南阳ACM24-素数距离问题
- 承载于以太网帧之上的数据包的解析——ARP、IPv4、IPv6
- 工作分配问题 assignment problem
- ddddddddddddd
- wzqs11
- Three Sum -- LeetCode [数组类]
- 最小重量机器设计问题
- PyQt挖地雷游戏学习笔记(7)
- 如何保护敏感信息不被篡改