当前位置:编程学习 > C/C++ >>

问题五十四: 输出10000以内的所有回文素数。

[plain]
/* 程序头部注释开始(为避免提交博文中遇到的问题,将用于表明注释的斜杠删除了)      
* 程序的版权和版本声明部分      
* All rights reserved.      
* 文件名称: txt.c      
* 作    者: liuyongshui      
* 问    题:  输出10000以内的所有回文素数 
* 问题来源:  
* 完成日期: 2013 年4 月17日      
* 版 本 号: V1.0      
*/     
 
#include <stdio.h> 
 
int  isPrimer(int n);      //是素数 
int  isPalindrome(int m);  //是回文数 
 
int main() 

    int i; 
 
    for(i=2; i<10000; i++) 
    { 
       if( isPrimer(i) && isPalindrome( isPrimer(i) ) ) 
       { 
           printf("是回文素数有:%d\n", i); 
       } 
    } 
    
    return 0; 

 
 
int isPrimer(int n) 

     int i; 
     int flag; 
 
     for(i=2; i<=n/2; i++) 
     {     
          flag=1; 
          if(n%i==0)   //检查是否为素数 
          { 
              flag=0;   //不是素数,flag=0 
          } 
     } 
      
     if(flag) 
     { 
          return n; 
     } 
     else  
     { 
          return 0; 
     } 

 
int isPalindrome(int m) 

    int i=0; 
    int j; 
    int num; 
    int a[5]; 
     
     
    if(m>=10)    //检测大于10的回文数 
    { 
        num=m; 
        while(m)  //m==0时结束,次循环吧m的每一位存入数组中 
        { 
            a[i++]=m%10; 
            m=m/10; 
        } 
 
        for(j=i-1; j>=0; j--)    //检测是否为回文 
        { 
            if(a[j]!= num%10)  
            { 
                return 0;     //若有不同返回0 
            } 
            num=num/10; 
        } 
         
        return 1; 
    } 
     
    else   //小于10,肯定不是回文数 
    { 
         return 0; 
    } 

/* 程序头部注释开始(为避免提交博文中遇到的问题,将用于表明注释的斜杠删除了)    
* 程序的版权和版本声明部分    
* All rights reserved.    
* 文件名称: txt.c    
* 作    者: liuyongshui    
* 问    题:  输出10000以内的所有回文素数
* 问题来源:
* 完成日期: 2013 年4 月17日    
* 版 本 号: V1.0    
*/   

#include <stdio.h>

int  isPrimer(int n);      //是素数
int  isPalindrome(int m);  //是回文数

int main()
{
    int i;

 for(i=2; i<10000; i++)
 {
    if( isPrimer(i) && isPalindrome( isPrimer(i) ) )
    {
        printf("是回文素数有:%d\n", i);
    }
 }
  
 return 0;
}


int isPrimer(int n)
{
     int i;
  int flag;

  for(i=2; i<=n/2; i++)
  {   
    flag=1;
          if(n%i==0)   //检查是否为素数
    {
        flag=0;   //不是素数,flag=0
    }
  }
 
  if(flag)
  {
    return n;
  }
     else
  {
    return 0;
  }
}

int isPalindrome(int m)
{
    int i=0;
 int j;
 int num;
 int a[5];
   
 
    if(m>=10)    //检测大于10的回文数
 {
  num=m;
     while(m)  //m==0时结束,次循环吧m的每一位存入数组中
  {
      a[i++]=m%10;
   m=m/10;
  }

  for(j=i-1; j>=0; j--)    //检测是否为回文
  {
   if(a[j]!= num%10)
   {
       return 0;     //若有不同返回0
   }
   num=num/10;
  }
       
  return 1;
 }
 
 else   //小于10,肯定不是回文数
 {
      return 0;
 }
}  局部图

 

\
补充:软件开发 , C语言 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,