加入收藏 | 设为首页 | 会员中心 | 我要投稿 江门站长网 (https://www.0750zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

C语言求回文素数代码及介绍

发布时间:2021-11-12 14:40:30 所属栏目:教程 来源:互联网
导读:问题描述 所谓回文素数指的是,对一个整数n从左向右和从右向左读其数值都相同且n为素数,则称整数为回文素数。 对于偶数位的整数,除了11以外,都不存在回文素数。即所有的4位整数、6位整数、 8位整数都不存在回文素数。下面列出两位和三位整数中包含的所有

问题描述
所谓回文素数指的是,对一个整数n从左向右和从右向左读其数值都相同且n为素数,则称整数为回文素数。
 
对于偶数位的整数,除了11以外,都不存在回文素数。即所有的4位整数、6位整数、 8位整数…都不存在回文素数。下面列出两位和三位整数中包含的所有回文素数。
 
两位回文素数:11
 
三位回文素数:101、131、151、181、191、313、353、373、383、727、757、787、 797、 919、 929
 
本题要求解的问题是:求出所有不超过1000的回文素数。
 
问题分析
本题要使用判断素数的方法,并且要解决如何求一个整数的回文数。
 
采用的方法是穷举法。对1000以内的每一个整数n进行考察,判断n是否为回文数。如果n是回文数,再判断它是否为素数,对于既是回文数也是素数的整数n,就是要求的回文素数,将其打印输出即可。
 
由于题目要求解的是所有不超过1000的回文素数,因此最后的结果中应该包含两位和三位的回文数。
 
采用穷举法来构造一个整数并求与其对应的反序数,若整数与其反序数相等,则该整数是回文数。
 
算法设计
在问题分析中己经确定要采用穷举法逐一考察1000以内的每个整数,因此本题的算法设计可以釆用循环结构来完成。
 
通过三重循环来遍历所有1000以内的整数。用三个循环变量来构造整数n,同时,这三个循环变量反序便可以构造出n的反序数m。其中,特别要注意的是如果n的个位为0,接下来要做的就是比较m和n的值是否相等,如果相等,则表明整数n是回文数。再来判断n是否是素数,如果n同时也为素数,则n为回文素数,将其打印出来即可。
 
下面是完整的代码:
 
#include<stdio.h>
 
int fun(int n);
 
int main()
{
    int i, j, k, n, m;
    printf("不超过1000的回文数:n");
    for(i=0; i<=9; ++i)  /*穷举第一位*/
        for(j=0; j<=9; ++j)  /*穷举第二位*/
            for(k=0; k<=9; ++k)  /*穷举第三位*/
            {
                n=i*100+j*10+k;  /*计算组成的整数*/
                m=k*100+j*10+i;  /*计算对应的反序数*/
                if(i==0 && j==0)  /*处理整数的前两位为0的情况*/
                {
                    m=m/100;
                }
                else if(i==0)  /*处理整数的第一位为0的情况*/
                {
                    m=m/10;
                }
                if(n>10 && n==m && fun(n))  /*若大于10且为回文素数,则输出*/
                {
                    printf("%dt", n);
                }
            }
    printf("n");
 
    return 0;
}
 
/*判断参数n是否为素数*/
int fun(int n)
{
    int i;
    for(i=2; i<(n-1)/2; ++i)
    {
        if(n%i == 0)
            return 0;
    }
    return 1;
}
 
运行结果:
 
不超过1000的回文数:
11 101 131 151 181 191 313 353 373 383 727 757 787 797 919 929 

(编辑:江门站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读