 
										
					
	[此贴子已经被作者于2007-11-8 9:09:15编辑过]


5分钟?
那不300seconds了?
[此贴子已经被作者于2007-11-8 9:10:51编辑过]

花了四个小时,编出来了
#include<stdio.h>
#include<math.h>
#define MAX 1000000000
#define MIN 3
long int nexthuiwen(long int currenthuiwen)
//输入:一个回文数
//输出:比当前回文数大的最小回文数
{
   long int i=currenthuiwen,m;
   int weishu=0;                  //数字的位数
   long int j=0;
//   printf("当前回文数是:%ld\n",i);
   while(i>0)                     //求出数值的位数
      {
      i=i/10;
      weishu+=1;
      }
   if(weishu==1)                  //求出规整前的新数
   {
      currenthuiwen+=1;
   }
   else
   {
      currenthuiwen+=(long int)pow10(weishu/2);
      currenthuiwen=currenthuiwen-currenthuiwen%(long int)pow10(weishu/2);
   }
//   printf("新数为:%ld\n",currenthuiwen);
   i=currenthuiwen;               //求出规整前数值的位数
   weishu=0;
   while(i>0)                     
      {
      i=i/10;
      weishu+=1;
      }
   for(j=1;j<=weishu/2;j++)      //规整新数
   {
      m=currenthuiwen/(long int)pow10(weishu-j)%10*(long int)pow10(j-1);
//      printf("%ld\n",m);
      currenthuiwen+=m;
   }
//   printf("新的回文数是: %ld\n",currenthuiwen);
   return currenthuiwen;
}
int sushu(long int data)
//输入:任意长整数
//输出:若该整数为素数,则输出1,否则输出0
{
   long int end=(long int)sqrt(data);
   long int i;
   for(i=2;i<=end;i++)
   {
     if(data%i==0)return 0;
   }
   return 1;
}
int main(void)
{
   long int data=MIN;
   while(data<=MAX)
   {
      if(sushu(data)) printf("%ld\n",data);
      data=nexthuiwen(data);
   }
   return 0;
}
在turboc++3.1中运行通过
时间我没算,在我的 电脑上跑了分把钟。
[此贴子已经被作者于2007-11-8 15:06:22编辑过]

/* 下面是生成一个9位的奇数回文数的程序,使用数字的,没有使用 数组 */
#include <stdio.h>
int main(void)
{
    int d1,
        d2,
        d3,
        d4,
        d5,
        palindrome = 0;
    int n = 0;
    for(d1 = 1; d1 <= 9; d1+=2)
    for(d2 = 0; d2 <= 9; d2++)
    for(d3 = 0; d3 <= 9; d3++)
    for(d4 = 0; d4 <= 9; d4++)
    for(d5 = 0; d5 <= 9; d5++)
    {
        ++n;
        palindrome = 100000000 * d1 +
                     10000000 * d2 +
                     1000000 * d3 +
                     100000 * d4 +
                     10000 * d5 +
                     1000 * d4 +
                     100 * d3 +
                     10 * d2 +
                     1 * d1;
            
        printf("%d\n", palindrome);
        //getchar();
                
    }
    printf("%d\n", n);
    getchar();
    return 0;
}
[此贴子已经被作者于2007-11-10 0:01:36编辑过]
