B2136 素数回文数的个数,输出结果是0,不知道是哪里错了
#include
#include
int f(int n)
{
for(int i=2;i<=n;i++)
{
if(n%i==0)
return 0;
}
return 1;
}
int m(int n)
{
int i=0,j=0,a[10000],b[10000];
while(n!=0)
{
a[i]=n%10;
n/=10;
i++;
}
for(int k=i;k>=0;k--)
{
b[j]=a[k];
j++;
}
for(int l=0;l<=i;l++)
{
if(a[l]!=b[l])
return 0;
}
return 1;
}
int main ()
{
int n,sum=0;
scanf("%d",&n);
for(int i=2;i<=n;i++)
{
if(f(i)==1&&m(i)==1)
sum++;
}
printf("%d",sum);
return 0;
}
修改如下,供参考:
#include <stdio.h>
//#include
int f(int n)
{
for(int i=2;i<n;i++) //(int i=2;i<=n;i++)
{
if(n%i==0)
return 0;
}
return 1;
}
int m(int n)
{
int i=0,j=0,a[10000],b[10000];
while(n!=0)
{
a[i]=n%10;
n/=10;
i++;
}
for(int k=i-1;k>=0;k--) //for(int k=i;k>=0;k--)
{
b[j]=a[k];
j++;
}
for(int l=0;l<i;l++) //(int l=0;l<=i;l++)
{
if(a[l]!=b[l])
return 0;
}
return 1;
}
int main ()
{
int n,sum=0;
scanf("%d",&n);
for(int i=11;i<=n;i++) //(int i=2;i<=n;i++)
{
if(f(i)==1 && m(i)==1)
sum++;
}
printf("%d",sum);
return 0;
}
int f(int n)
{
for(int i=2;i<=n;i++) //这里i不能等于n,等于n必定能整除就只能返回一个0
{
if(n%i==0)
return 0;
}
return 1;
}