声明一个自然数区间类 [m,n],设计构造函数、默认构造函数和析构函数,具有功能如下,主函数声明区间类对象并调用功能函数:
1.判断区间内的某一数是否是水仙花数;可以是 [0,某数n]
2.判断区间内的某一数是否是素数; 可以是 [0,某数n]
3.判断哥德巴赫猜想;
4.求两个自然数的最大公约数、最小公倍数;
5.求某一区间的完数(孪生数);
自然数区间类
#include <iostream>
#include <cstdlib>
using namespace std;
class cp
{
public:
int m, n;
cp(int m, int n)
{
if (m < n)
{
this->m = m;
this->n = n;
}
else
{
this->m = n;
this->n = m;
}
}
~cp() {}
void narci()
{
int i, hun, ten, ind;
int im = m >= 100 ? m : 100;
int in = n <= 999 ? n : 999;
for (i = im; i <= in; i++)
{
hun = i / 100;
ten = (i - hun * 100) / 10;
ind = i % 10;
if (i == hun * hun * hun + ten * ten * ten + ind * ind * ind) /*各位上的立方和是否与原数n相等*/
cout << i << " ";
}
cout << endl;
}
int isprime(int i)
{
if (i <= 1)
return 0;
for (int j = 2; j < i; j++)
{
if (i % j == 0)
return 0;
}
return 1;
}
void prime()
{
int i;
for (i = m; i <= n; i++)
{
if (isprime(i))
cout << i << " ";
}
cout << endl;
}
void gef()
{
int i, j;
for (i = m; i <= n; i++)
{
if (i % 2 == 0)
for (j = 2; j <= i - 2; j++)
{
if (isprime(j) && isprime(i - j))
{
cout << i << "=" << j << "+" << i - j << " ";
break;
}
}
}
cout << endl;
}
void gcdlcm()
{
int a = m, b = n, c;
while (b > 0)
{
c = a % b;
a = b;
b = c;
}
cout << "最大公约数为:" << a << endl;
cout << "最小公倍数为:" << m * n / a << endl;
}
void perfect()
{
int i, j, sum;
for (i = m; i <= n; i++)
{
sum = 0;
for (j = 1; j < i; j++)
if (i % j == 0)
sum += j;
if (j == sum)
cout << j << " ";
}
cout << endl;
}
};
int main()
{
int m, n;
cin >> m >> n;
cp p(m, n);
cout << p.m << "到" << p.n << "区间的水仙花数" << endl;
p.narci();
cout << p.m << "到" << p.n << "区间的素数" << endl;
p.prime();
cout << p.m << "到" << p.n << "区间的验证哥德巴赫猜想" << endl;
p.gef();
cout << p.m << "和" << p.n << "最大公约数与最小公倍数" << endl;
p.gcdlcm();
cout << p.m << "到" << p.n << "区间的完数" << endl;
p.perfect();
return 0;
}
之后再添加类的各个功能函数即可
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!