一 问题及代码
/*项目1:素数和回文
编制2个返回值为int型的函数,用于判断参数是否为素数和回文,调用函数回答以下问题(请包括在一个main()函数中完成,输出时,用明显的提示语,说明正在完成哪个任务。)
[cpp] view plain copy
int isPrimer(int n)//判断是否为素数
{
}
int isPalindrome(int n) //判断是否为回文,判断一个数是否为回文,可以利用循环把这个反倒过来,再判断倒过来的这个数和原数是不是相等,如n=1223,反过来是3221,和原数不相等,所以不是
{
}
(1)输出300以内的所有素数。
(2)输出300以内的所有回文数。
(3)输出300以内的所有回文素数。
(4)若一个素数的反序数仍为素数,则称它为可逆素数。求300以内的所有可逆素数。*/
#include <iostream.h>
int isPrimer(int n)
{
int h=0;
for(int i=1;i<=n;i++)
{
if(n%i==0)
h++;
}
if (h==2)
return 2;
else
return 1;
}
int isPalindrome(int n)
{
if(n>10&&n<100)
{
if ((n%10)==n/10)
return 2;
else
return 1;
}
if(n>=100&&n<=300)
{
if((n%10)==n/100)
return 2;
else
return 1;
}
if (n>=1&&n<=10)
return 2;
else
return 1;
}
void main()
{
int m,k,j,x,y,z,q,w;
cout<<"输出300以内的所有素数:";
for (j=1;j<300;j++)
{
m=isPrimer(j);
if(m==2)
cout<<j<<" ";
}
cout<<"输出300以内的所有回文数:";
for(j=0;j<300;j++)
{
k=isPalindrome(j);
if (k==2)
cout<<j<<" ";
}
cout<<"输出300以内的所有回文素数";
for(j=0;j<300;j++)
{ x=isPrimer(j);
y=isPalindrome(j);
if(x==2&&y==2)
cout<<j<<" ";
}
cout<<"300以内的所有可逆素数为:";
for (j=0;j<300;j++)
{
z=isPrimer(j);
if(z==2)
{
if(j>=10&&j<=99)
{if(isPrimer( (j%10)*10+(j/10) )==2 )
cout<<j<<" ";
}
if(j>=100&&j<300)
{if(isPrimer( (j%10)*100+((j/10)%10)*10+j/100 )==2 )
cout<<j<<" ";
}
if(j<10&&j>=0)
cout<<j<<" ";
}
}
}
运行结果
心得体会 这个题目又长又难。
知识点总结 函数问题要好好学。