makabaka qaq 2022-05-09 21:43 采纳率: 92.9%
浏览 38
已结题

声明一个自然数区间类 [m,n],设计构造函数、默认构造函数和析构函数

声明一个自然数区间类 [m,n],设计构造函数、默认构造函数和析构函数,具有功能如下,主函数声明区间类对象并调用功能函数:
1.判断区间内的某一数是否是水仙花数;可以是 [0,某数n]
2.判断区间内的某一数是否是素数; 可以是 [0,某数n]
3.判断哥德巴赫猜想;
4.求两个自然数的最大公约数、最小公倍数;
5.求某一区间的完数(孪生数);

  • 写回答

2条回答 默认 最新

  • 关注

    自然数区间类

    #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;
    }
    

    之后再添加类的各个功能函数即可

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 7月10日
  • 已采纳回答 7月2日
  • 创建了问题 5月9日

悬赏问题

  • ¥50 hyper默认的default switch
  • ¥15 网站打不开,提示502 Bad Gateway
  • ¥20 基于MATLAB的绝热压缩空气储能系统代码咨询
  • ¥15 R语言建立随机森林模型出现的问题
  • ¥20 unity内置语言切换的按钮设置
  • ¥15 中级微观经济学,生产可能性边界问题
  • ¥15 TCP传输时不同网卡传输用时差异过大
  • ¥15 请各位看看我写的属于什么算法,或者有更正确的写法?
  • ¥15 html5 qrcode 扫描器
  • ¥15 爬取网页信息并保存需要完整代码