问题 G: 相邻的素数
时间限制: 1 Sec 内存限制: 128 MB提交: 2031 解决: 106
[ 提交][ 状态]
题目描述
任何大于1的自然数(即正整数),除了1与它自身外,再没有其它的正约数了,这样的自然数叫做质数或素数。现在,需要你来设计一个类Compute,有两个int类型的属性m和n,定义:
(1)构造函数Compute(int,int)用来初始化m和n。
(2)void showResult():当n>0时,按照从小到大的顺序输出从m开始,不小于m的n个素数;当n<0时,按照从大到小的顺序输出从m开始,不大于m的|n|(n的绝对值)个素数。输出时,两两之间用一个空格隔开。
在计算过程中,所有数据不会超出int类型表示范围。
输入
两个int类型整数,分别是Compute类的对象的属性m和n的值。
输出
即为showResult()方法的输出。
样例输入
4 6
样例输出
5 7 11 13 17 19
#include<iostream>
#include <cmath>
#include <math.h>
using namespace std;
bool sudu(int x){
if(x <= 1){
return false;
}
int i =2;
for(i =2;i<=sqrt(x);i++){
if(x%i == 0){
return false;
}
}
return true;
}
class Compute{
public:
int n_;
int m_;
Compute(int m,int n):n_(n),m_(m){
}
void showResult(){
if(n_<0){
int temp = -n_;
while(temp){
if(sudu(m_)){
cout<<m_;
temp -=1;
break;
}
if(m_<= 2){
break;
}
m_--;
}
m_--;
if(m_ >= 2)
while(temp){
if(sudu(m_)){
cout<<" "<<m_;
temp-=1;
}
if(m_<= 2){
break;
}
m_--;
}
}else{
int temp = n_;
while(temp){
if(sudu(m_)){
cout<<m_;;
temp -=1;
break;
}
m_++;
}
m_++;
while(temp){
if(sudu(m_)){
cout<<" "<<m_;
temp-=1;
}
m_++;
}
}
}
};
int main()
{
int a, b;
cin>>a>>b;
Compute compute(a, b);
compute.showResult();
return 0;
}