首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

回文质数求法.

2012-03-19 
回文质数求法...求助...#include stdio.h#include stdlib.hvoid huiwen(int x,int y)int main(){int

回文质数求法...求助...
#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;} 

热点排行