正整数类

来源:互联网 发布:梦里花落知多少81节 编辑:程序博客网 时间:2024/05/06 12:30
#include"001.h"#include<iostream>using namespace std;class NaturalNumber{private:int n;public:  NaturalNumber(){}//两个构造函数对应水仙花数的第二种方法  NaturalNumber(int x){n=x;}void setValue (int x);//置数据成员n的值,要求判断是否是正整数int getValue();bool isPrime();  //判断数据成员n是否为素数,是返回true,否则返回falsevoid printFactor();  //输出数据成员n的所有因子,包括1和n自身bool isPerfect(); //判断数据成员n是否为完全数。若一个正整数n的所有小于n的因子之和等于n, //则称n为完全数, 如6=1+2+3是完全数。bool isReverse(int x);//判断形式参数x是否为数据成员n的逆向数(例321是123的逆向数)。bool isDaffodil(); //判断形式参数x是否是水仙花数。水仙花数的各位数字立方和等于该数,//如153=1*1*1+5*5*5+3*3*3void printDaffodils(); //显示所有大于1,且小于数据成员n的水仙花数;};int main(void){NaturalNumber 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();nn.setValue(6);cout<<nn.getValue()<<(nn.isPerfect()?"是":"不是")<<"完全数..."<<endl;  int xx=321;  nn.setValue(123);cout<<nn.getValue();cout<<(nn.isReverse(xx)?"是":"不是")<<xx<<"的逆向数..."<<endl;  nn.setValue(153);cout<<nn.getValue()<<(nn.isDaffodil()?"是":"不是")<<"水仙花数..."<<endl;  nn.setValue(12345);  cout<<nn.getValue()<<"以内的水仙花数:";  nn.printDaffodils();}//请在下面定义类中的各个成员函数void NaturalNumber::setValue (int x){  n=x;}int NaturalNumber::getValue(){  return n;}bool NaturalNumber::isPrime(){  for(int i=2;i<sqrt(n);++i)    if(0==n%i)return false;  return true;}void NaturalNumber::printFactor(){  for(int i=2;i<n;++i)  if(0==n%i)cout<<i<<",";  cout<<endl;}bool NaturalNumber::isPerfect(){  int sum=0;  for(int i=1;i<n;++i)    if(0==n%i)    {      sum+=i;    }    if(n==sum)return true;    else return false;}bool NaturalNumber::isReverse(int x){  int m=0;  while(x)  {    m=m*10+x%10;    x=x/10;  }  if(m==n)return true;  else return false;}bool NaturalNumber::isDaffodil(){  int m=0,m2=n;  while(m2)  {    m+=(m2%10)*(m2%10)*(m2%10);    m2=m2/10;  }//  cout<<"m="<<m<<endl;  if(n==m)return true;  else return false;}void NaturalNumber::printDaffodils(){  for(int i=2;i<n;i++)  {    int m=0,m2=i;    while(m2)    {      m+=(m2%10)*(m2%10)*(m2%10);      m2=m2/10;    }    if(m==i)cout<<i<<",";  }  cout<<endl;//    int i=0;//    for(i=2;i<n;i++)//    {//       NaturalNumber qq(i);//       if(qq.isDaffodil())cout<<i<<",";//    }//    cout<<endl;}

0 0
原创粉丝点击