#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int IsHuiwen(int number)
{
int temp;
int sum=0;
temp=number;
while(number)
{
sum=sum*10+number%10;
number=number/10;
}
if(temp==sum)
{
return 1;
}
return 0;
}
void huiwen(const int n)
{
int i;
for(i=1;i<n;i++)
{
if(IsHuiwen(i))
{
printf("%d\n",i);
}
}
}
int IsSu(const int s)
{
int i;
if (s<2)
{
return 0;
}
for(i=2;i<=sqrt(s);i++)
{
if(s%i==0)
{
return 0;
}
}
return 1;
}
void su(const int n)
{
int i;
for(i=1;i<=n;i++)
{
if(IsSu(i))
{
printf("%d\n",i);
}
}
}
int Qinmi(const int n)
{
int x,y,temp,i;
for (x=1;x<n;x++)
{
for(y=0,i=1;i<=x/2;i++)
{
if(!(x%i))
{
y=y+i;
}
}
for(temp=0,i=1;i<=y/2;i++)
{
if(!(y%i))
{
temp=temp+i;
}
}
if(temp==x&&x<y) {
printf("%d %d\n",x,y);
}
}
return 0;
}
int Shuixianhua(int n)
{
int j,x,y,z;
if (n>1000)
{
n=1000;
}
if(n<100)
{
return 0;
}
j=100;
while(j<n)
{
x=j/100;
y=j/10%10;
z=j%10;
if(j==x*x*x+y*y*y+z*z*z)
{
printf("%d\n", j);
}
j++;
}
}
int main()
{
int max;
int t;
while(1)
{
printf("范围:");
scanf("%d", &max);
printf("0.退出\n1.回文数\n2.素数\n3.亲密数\n4.水仙花数\n");
scanf("%d", &t);
printf("\n");
switch (t) {
case 0:
exit(0);
break;
case 1:
huiwen(max);
break;
case 2:
su(max);
break;
case 3:
Qinmi(max);
break;
case 4:
Shuixianhua(max);
break;
}
}
return 0;
}
运行结果: