c++作业7
2016-06-05 23:35
260 查看
项目3:特殊三位数:输出满足条件n=a!+b!+c!的所有三位数n,其中,a、b、c分别是n的百、十、个位数。要求用自定义函数实现求阶乘。
二、项目1:素数和回文:编制2个返回值为int型的函数,用于判断参数是否为素数和回文,调用函数回答以下问题
(1)输出300以内的所有素数。
(2)输出300以内的所有回文数。
(3)输出300以内的所有回文素数。
(4)若一个素数的反序数仍为素数,则称它为可逆素数。求300以内的所有可逆素数。
#include<iostream> using namespace std; int fact(int); int main() { int cba,c,b,a,sum; cba=100; while(cba<1000) { a=cba%10; b=(cba/10)%10; c=cba/100; sum=fact(a)+fact(b)+fact(c); if(sum==cba) cout<<cba<<" "; ++cba; } return 0; } int fact(int k) { int l, f=1; for(l=1; l<=k; ++l) f=f*l; return f; }
二、项目1:素数和回文:编制2个返回值为int型的函数,用于判断参数是否为素数和回文,调用函数回答以下问题
(1)输出300以内的所有素数。
(2)输出300以内的所有回文数。
(3)输出300以内的所有回文素数。
(4)若一个素数的反序数仍为素数,则称它为可逆素数。求300以内的所有可逆素数。
#include<iostream> #include<cmath> using namespace std; bool isPalindrome(int); int reverse(int); bool isPrime(int); int main() { int m; cout<<"(1)输出300以内的所有素数"<<endl; for(m=2;m<300;++m) { if(isPrime(m)) cout<<m<<'\t'; } cout<<endl<<endl; cout<<"(2)输出300以内的所有回文数"<<endl; for(m=2;m<300;++m) { if(isPalindrome(m)) cout<<m<<'\t'; } cout<<endl<<endl; cout<<"(3)输出300以内的所有回文素数"<<endl; for(m=2;m<300;++m) { if(isPalindrome(m)&&isPrime(m)) cout<<m<<'\t'; } cout<<endl<<endl; cout<<"(4)求300以内的所有可逆素数"<<endl; for(m=2;m<300;++m) { if(isPrime(m)&&isPrime(reverse(m))) cout<<m<<'\t'; } return 0; } bool isPrime(int n) { bool prime=true; int k=int(sqrt(n)); for(int i=2;i<=k;i++) { if(n%i==0) { prime=false; break; } } return prime; } bool isPalindrome(int n) { bool palindrome=false; if(reverse(n)==n) palindrome=true; return palindrome; } int reverse(int x) { int m=0; while(x>0) { m=m*10+x%10; x=x/10; } return m; }