读书人

回文质数求法.

发布时间: 2012-03-19 22:03:05 作者: rapoo

回文质数求法...求助...
#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以内的数,帮帮忙,谢谢啦......

[解决办法]

C/C++ code
#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;} 

读书人网 >C语言

热点推荐