一 .特殊三位数
#include<iostream>
using namespace std;
int fac(int n)
{
int i, m=1;
for(i=1;i<=n;i++)
m=m*i;
return m;
}
int main()
{
int a,b,c,sum;
int n;
for(n=100;n<=1000;n++)
{
c=n%10;
b=(n/10)%10;
a=n/100;
sum=fac(a)+fac(b)+fac(c);
if(sum==n)
cout<<n<<endl;
}
return 0;
}
二.素数与回文
#include <iostream>
using namespace std;
int isPrimer(int);
int isPalindrome(int);
int opposite(int);
int main()
{
int i,p;
cout<<"素数:"<<endl;
for(i=1;i<=300;i++)
{
if(isPrimer(i))
{
cout<<"\t"<<i;
}
}
cout<<endl;
cout<<"回文数:"<<endl;
for(i=1;i<=300;i++)
{
if(isPalindrome(i))
{
cout<<"\t"<<i;
}
}
cout<<endl;
cout<<"回文素数:"<<endl;
for(i=1;i<=300;i++)
{
if(isPrimer(i)&&isPalindrome(i))
{
cout<<"\t"<<i;
}
}
cout<<endl;
cout<<"可逆素数有:"<<endl;
for(i=1;i<=300;i++)
{
if(isPrimer(i))
{
p=opposite(i);
if(isPrimer(p))
{
cout<<"\t"<<i;
}
}
}
cout<<endl;
return 0;
}
int opposite(int n)
{
int a[5];
int i=0,j,p=0;
while(n!=0)
{
a[i]=n%10;
n=n/10;
i++;
}
for(j=0;j<i;j++)
{
p=a[j]+p*10;
}
return p;
}
int isPrimer(int n)
{
int i,k=0;
for(i=n-1;i>1;i--)
{
if(n%i==0)
k++;
}
if(k>0)
return 0;
else
return 1;
}
int isPalindrome(int n)
{
int p;
p=opposite(n);
if(p==n)
return 1;
else
return 0;
}