C++作业7
2016-06-05 21:38
471 查看
一 特殊三位数
#include<iostream> using namespace std; int fact(int); int main() { int n,a,b,c,sum; n=100; while(n<1000) { c=n%10; b=(n/10)%10; a=n/100; sum=fact(a)+fact(b)+fact(c); if(sum==n) cout<<n<<" "; ++n; } return 0; } int fact(int n) { int i, f=1; for(i=1;i<=n;++i) f=f*i; return f; }二 素数和回文
#include<iostream.h> inline int isPrimer(int n) { int i; for(i=2;i<n;i++) { if(n%i==0) break; } if(i==n) return 1; else return 0; } inline int isPalindrome(int n) { int m,a,b,c; b=n%10; a=n/10%10; c=n/100; if(n<10) m=n; else if(n<100) m=b*10+a; else m=b*100+a*10+c; if(m==n) return 1; else return 0; } inline int fan(int n) { int m,a,b,c; b=n%10; a=n/10%10; c=n/100; if(n<10) m=n; else if(n<100) m=b*10+a; else m=b*100+a*10+c; return m; } int main() { int n,i=0,j=0,p=0,q=0,m; int a[300]={0},b[300]={0},c[300]={0},d[300]={0}; for(n=2;n<=300;n++) { if(isPrimer(n)==1) a[i++]=n; if(isPalindrome(n)==1) b[j++]=n; if((isPalindrome(n)==1)&&(isPrimer(n)==1)) c[p++]=n; if((isPrimer(fan(n))==1)&&(isPrimer(n)==1)) d[q++]=n; } cout<<"200以内的所有素数有:"<<endl; for(m=0;m<i;m++) { cout<<a[m]<<"\t"; if((m+1)%5==0) cout<<endl; } cout<<endl<<"300以内的所有回文数有:"<<endl; for(m=0;m<j;m++) { cout<<b[m]<<"\t"; if((m+1)%5==0) cout<<endl; } cout<<endl<<"300以内的所有回素数有:"<<endl; for(m=0;m<p;m++) { cout<<c[m]<<"\t"; if((m+1)%5==0) cout<<endl; } cout<<endl<<"300以内的所有可逆素数有:"<<endl; for(m=0;m<q;m++) { cout<<d[m]<<"\t"; if((m+1)%5==0) cout<<endl; } cout<<endl; return 0; }