回文质数求法...求助...
#include <stdio.h>
#include <stdlib.h>
void huiwen(int x,int y);
int main()
{
int num1,num2;
scanf("%d%d",&num1,&num2);
huiwen(num1,num2);
return 0;
}
void huiwen(int x,int y)
{
int i=2;
int a=0,b=0,c=0,d,e;
d=x,e=y;
if(d!=e)
{
for(i=2;i<d;i++)
{
a=d%i;
if(a!=0)
{
continue;
}
else
{
break;
}
}
if(d!=0)
{
b=d;
c=0;
while(b!=0)
{
c=c*10+b%10;
b=b/10;
}
if(c==d)
{
printf("%d\n",d);
}
}
}
d=d+1;
huiwen(d,e);
}
帮忙看下这个代码有什么问题?为什么无论输入什么数都会输出很多个回文质数,而且求不了1000000以内的数,帮帮忙,谢谢啦......
[解决办法]
#include <stdio.h>#include <malloc.h>intlen(int n){ int length = 0; while (n != 0) { n /= 10; length++; } return length;}intisPal(int n){ int *p; int *f; int *end; int t; int FLAG = 0; int nn = n; p = (int *)malloc(len(n)*sizeof(int)); if (p == NULL) return -1; f = p; end = len(n) + f - 1; while (n != 0) { t = n % 10; n /= 10; *p = t; p++; } p = f; while (*p == *end) { FLAG++; p++; end--; } free(f); n = nn; if (FLAG == (len(n))) return 1; else return 0;}intisPrime(int n){ int i; int FLAG = 0; for (i = 2; i < n; i++) if (n % i == 0) FLAG++; if (FLAG) return 0; else return 1;}intisPalPrime(int n){ if (isPrime(n) && isPal(n)) return 1; else return 0;}intmain(){ printf("%d", isPalPrime(131)); return 0;}