易游港

 找回密码
 注册
搜索
热搜: 城市天际线
查看: 2782|回复: 0

求回文素数

[复制链接]

64

主题

3

回帖

387

积分

管理员

积分
387
发表于 2021-12-16 16:36:08 | 显示全部楼层 |阅读模式
任意的整数,当从左向右读与从右向左读是相同的,且为素数时,称为回文素数。求 1000 以内的所有回文素数。算法思想实例的重点是判断一个数是否是回文素数。要输出 1000 以内的所有回文素数,首先应判断这个数是否是素数;如果是,再进一步判断这个数是两位数还是三位数,若是两位数,则需判断个位数和十位数是否相同;若是三位数,则需判断个位数和百位数是否相同。若相同,则判断为回文素数,否则继续下次判断。

① 定义一个函数 sushu,其作用是判断一个数是否是素数。
② 对判断为素数的数,再判断其是否是两位数。
    若是两位数,再判断其个位数和十位数是否相同,若相同则打印输出;若不相同,则执行④;若不是两位数,则执行③。
③ 若是三位数,则判断其个位数和百位数是否相同。若相同,则打印输出;若不相同,则执行 ④。
④ 循环控制变量 i 自增 1。
⑤ 直到 i 自增至 1000 结束。


源代码:
[C] 纯文本查看 复制代码
#include <stdio.h>
int sushu(int i)
{
    int j;
    if(i<=1)
        return 0;
    if(i==2)
        return 1;
    for(j=2;j<i;j++)
    {
        if(i%j==0)
            return 0;
        else if(i!=j+1)
            continue;
        else
            return 1;
    }
}
int main()
{
    int i;
    for(i=10;i<1000;i++)
        if(sushu(i)==1)
            if(i/100==0)
            {
                if(i/10==i%10)
                    printf("%5d",i);
                if(i%5==0)
                    printf("\n");
            }
            else
                if(i/100==i%10)
                    printf("%5d",i);
                if(i%5==0)
                    printf("\n");
    return 0;

调试运行结果1000 以内所有的回文素数调试运行结果如下所示:
  11  101  131  151  181  191  313  353  373  383  727  757  787  797  919  929

回复

使用道具 举报

*滑块验证:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|易游港

GMT+8, 2025-3-13 03:11 , Processed in 0.103658 second(s), 19 queries .

Powered by Discuz! X3.5

Copyright © 2001-2025 Tencent Cloud.

快速回复 返回顶部 返回列表