| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 286 人关注过本帖
标题:素数的问题
只看楼主 加入收藏
非己莫属
Rank: 2
来 自:河南信阳
等 级:论坛游民
帖 子:13
专家分:14
注 册:2012-4-28
结帖率:66.67%
收藏
已结贴  问题点数:10 回复次数:1 
素数的问题
现在给出你一些数,要求你写出一个程序,输出这些整数相邻最近的素数,并输出其相距长度。如果左右有等距离长度素数,则输出左侧的值及相应距离。
如果输入的整数本身就是素数,则输出该素数本身,距离输出0

输入


第一行给出测试数据组数N(0<N<=10000)
接下来的N行每行有一个整数M(0<M<1000000)

 


输出

每行输出两个整数 A B.
其中A表示离相应测试数据最近的素数,B表示其间的距离。

样例输入

3
6
8
10


样例输出

5 1
7 1
11 1


搜索更多相关主题的帖子: 测试 
2012-05-29 20:26
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:10 
我写个看看 就当练手了 有不对的地方请大家指正

貌似你想过ACM 你可以改成ACM的输入输出格式。

代码如下:
程序代码:
#include <iostream>
using namespace std;

/////////////////////////////
// construct the class
class number
{
public:
    void set_num();
    int is_prime(unsigned int);
    void prime_len();

private:
    unsigned int  num;
    unsigned int  len;
};

// give the private variable 'num' a value
void number::set_num()
{
    unsigned int a;
    cout << "Please input a unsigned number:" ;
    cin >> a;
    num = a;
}

//  is prime number or not ?
int number::is_prime(unsigned int sub_num)
{
  int flag, i;

  for (i = 2; i < sub_num; i++)
  {
      if (sub_num % i == 0) 
          break;
  }
  if (i == sub_num)
  {
      flag = 1;
  }
  else
      flag = 0;

  return flag;
}

// output the shortest position of the prime number
void number::prime_len()
{
    int i = 0;
    int len1, len2;

    for (i = 0; ; i++)
    {
        if (!is_prime(num + i))
           continue;
        else
        {
            len1 = i;
            break;
        }
    }
   
    for (i = 0; ; i++)
    {
        if (!is_prime(num - i))
           continue;
        else
        {
            len2 = i;
            break;
        }
    }

    if (len1 > len2)
        cout << num - len2 << " " << len2 << endl;
    else if (len1 == len2)
        cout << num - len1 << " " << len1 << endl;
    else
        cout << num + len1 << " " << len1 << endl;
}

////////////////////////////////////
// the main entry point
////////////////////////////////////
int main(int argc, char *argv[])
{
    number n;
    int N;
  
    cout << "Please input N:" ;
    cin >> N;

    while (N--)
    {
        n.set_num();
        n.prime_len();
    }

    return 0;
}


梅尚程荀
马谭杨奚







                                                       
2012-05-30 11:47
快速回复:素数的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023867 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved