01./* 02.* 程式的著作權和版本聲明部分 03.* Copyright (c)2013, 煙台大學電腦學院學生 04.* All rightsreserved. 05.* 檔案名稱:NaturalNumber .cpp 06.* 作 者:趙冠哲 07.* 完成日期:2013年3月22日 08.* 版本號碼: v1.0 09.* 輸入描述: 10.* 問題描述: 11.*/ #include<iostream>#include<cmath>using namespace std;class NaturalNumber{private:int n; public:void setValue (int x);//置資料成員n的值,要求判斷是否是正整數int getValue(); //返回私人資料成員n的值bool isPrime(); //判斷資料成員n是否為素數,是返回true,否則返回falsevoid printFactor(); //輸出資料成員n的所有因子,包括1和n自身bool isPerfect(); //判斷資料成員n是否為完全數。若一個正整數n的所有小於n的因子之和等於n, 則稱n為完全數, 如6=1+2+3是完全數。bool isReverse();//判斷形式參數x是否為資料成員n的逆向數(例321是123的逆向數)。bool isDaffodil(); //判斷形式參數x是否是水仙花數。水仙花數的各位元字立方和等於該數,如153=1*1*1+5*5*5+3*3*3//void printDaffodils(void); //顯示所有大於1,且小於資料成員n的水仙花數;};void 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;nn.setValue (123); cout<<nn.getValue()<<(nn.isReverse()?"是該數的":"不是該數的")<<"逆向數!" <<endl;nn.setValue (153); cout<<nn.getValue()<<(nn.isDaffodil()?"是":"不是")<<"水仙花數!" <<endl; nn.setValue (1000);cout<<nn.getValue()<<"以內水仙花數有:";nn.printDaffodils();//nn.isPerfect(6);//cout<<nn.getValue();//隨著成員函數的實現,增加代碼以完成相關的測試。注意判斷類的成員函數需要測試是或否兩種情況……}//請在下面定義類中的各個成員函數void NaturalNumber::setValue(int x){if((x%1==0)&&(x>0)){cout<<x<<"是正整數!"<<endl;n=x;}else{cout<<x<<"不是正整數!"<<endl;}}int NaturalNumber::getValue(){return n;}bool NaturalNumber::isPrime(){int m;for(m=2;m<n;m++){ if(n%m==0)return false; else return true;}}void NaturalNumber::printFactor(){int i;for(i=1;i<n;i++){if((n%i)==0)cout<<i<<" ";}}bool NaturalNumber::isPerfect(){int i,s;s=0;for(i=1;i<n;i++){if((n%i)==0)s=s+i;}if(s==n)return true;else return false;}bool NaturalNumber::isReverse(){int a,b,c,d;cout<<"請輸入一個三位元:";cin>>a;b=a/100;c=a/10-b*10;d=a%10;if((d*100+c*10+b)==n)return true;else return false;}bool NaturalNumber::isDaffodil(){int b,c,d;b=n/100;c=n/10-b*10;d=n%10;if(n==b*b*b+c*c*c+d*d*d)return true;else return false;}void NaturalNumber::printDaffodils(){int a,b,c,d;for(a=2;a<n;a++){b=a/100;c=a/10-b*10;d=a%10;if(a==b*b*b+c*c*c+d*d*d)cout<<a<<" ";}cout<<endl;return ;}
運行結果: