4周任务3

来源:互联网 发布:HL软件 编辑:程序博客网 时间:2024/06/11 09:35
#include <iostream>           #include <cmath>          using namespace std;          class NuturalNumber  //类的声明      {    private:         int n;  public:         void setValue(int x);  //  置数据成员n的值,判断是否是正整数     int getValue();   //     返回私有数据成员n的值 bool isPrime();     //   判断数据成员n是否为素数,是返回true,否则返回false void printFactor();  //   输出数据成员n的所有因子,包括1和他本身 bool isPerfect();      //  判断n数否为完全数 bool isReverse(int x);  //  判断形式参数x是否为n的逆向数     bool isDaffodil(int x); //   判断x是否为水仙花数     void printDaffodils();  //   显示所有大于1,且小于n的水仙花数   };        void main()        {             NuturalNumber nn; //定义类的一个实例(对象)               nn.setValue(6);             cout<<nn.getValue()<<(nn.isPrime()?"是":"不是")<<"素数"<<endl;             nn.setValue (37);              cout<<nn.getValue()<<(nn.isPrime()?"是":"不是")<<"素数" <<endl;             nn.setValue (84);              cout<<nn.getValue()<<"的因子有:";             nn.printFactor();      cout<<endl;      nn.setValue(6);          cout<<nn.getValue()<<(nn.isPerfect()?"是":"不是")<<"完全数" <<endl;         nn.setValue(123);          cout<<nn.getValue()<<(nn.isReverse(321)?"是":"不是")<<"逆向数" <<endl;         cout<<"153"<<(nn.isDaffodil(153)?"是":"不是")<<"水仙花数" <<endl;      nn.setValue(1000);      nn.getValue();      nn.printDaffodils();    }        void NuturalNumber::setValue(int x)        {         if(x>0 && x%1==0)         {          n=x;         }        }        int NuturalNumber::getValue()        {         return n;        }        bool NuturalNumber::isPrime()        {            int i;            for(i=2;i<=sqrt(n);i++)            {                if(n%i==0)                   return false;            }            return true;        }        void NuturalNumber::printFactor()        {            int i;            for (i=1;i<=n;i++)            {                if(n%i==0)                    cout<<i<<" ";            }        }        bool  NuturalNumber::isPerfect()        {            int i,s=0;            for(i=1;i<n;i++)            {                if(n%i==0)                    s=s+i;            }            if(s==n)                return true;            else                return false;        }        bool NuturalNumber::isReverse(int x)       {           int a,s=0;          while (x>0)          {              a=x%10;              s=s*10+a;              x=x/10;          }          if(s==n)              return true;          else              return false;      }              bool NuturalNumber::isDaffodil(int x)       {         n=x;      int a,s=0;          while (x>0)          {              a=x%10;              s=s+a*a*a;              x=x/10;          }          if(s==n)              return true;          else              return false;      }      void NuturalNumber::printDaffodils()      {         for(int i=2;i<n;i++)     {         if(isDaffodil(i))                cout<<i<<" ";     }          cout<<endl;          return;  }      


 

 

运行结果:

原创粉丝点击