当前位置: 首页 > article >正文

C语言-详细讲解-P1217 [USACO1.5] 回文质数 Prime Palindromes

目录

1.题目要求

2.题目解读 

3.代码实现


1.题目要求

2.题目解读 

这道题主要考察了如何求回文数以及如何求质数,求质数可以看我之前的帖子C语言-详细讲解-6个代码让你素数问题从入门到精通

这里我们主要来看如何求回文数

3.代码实现

#include <stdio.h>
#include <math.h>

// 判断一个数是否为质数
int is_prime(int num) {
    if (num < 2) return 0;  // 小于2的数不是质数
    if (num == 2) return 1;  // 2是质数
    if (num % 2 == 0) return 0;  // 大于2的偶数不是质数
    for (int i = 3; i <= (int)sqrt(num); i += 2) {  // 从3开始,以2为步长,遍历到num的平方根
        if (num % i == 0) return 0;  // 如果能被整除,不是质数
    }
    return 1;  // 遍历完没被整除,是质数
}

// 判断一个数是否为回文数
int is_palindrome(int num) {
    int original = num;
    int reversed_num = 0;
    while (num > 0) {
        //将 reversed_num 左移一位(乘以 10),然后加上 num 的最低位数字(num % 10)。这样就逐步构建出了原数的反转数字。
		reversed_num = reversed_num * 10 + num % 10;
        //这一步将 num 缩小 10 倍,去掉已经处理过的最低位数字,以便下一次循环处理更高位的数字。
        num /= 10;
    }
    return original == reversed_num;
}

int main() {
    int a, b;
    scanf("%d %d", &a, &b);
    // 确保a从奇数开始(因为除2外偶数不是质数)
    if (a % 2 == 0) a++;
    for (int num = a; num <= b; num += 2) {  // 只遍历奇数
        if (is_palindrome(num) && is_prime(num)) {
            printf("%d\n", num);
        }
    }
    return 0;
}

***新人博主创作不易,希望大家多多点赞关注呀~ 


http://www.kler.cn/a/409036.html

相关文章:

  • 微信小程序与公众号关联(同一主体),获取unionId并关联公众号openid
  • ROS2 报错记录
  • Go语言反射(Reflection)详解:探索reflect包中的Type和Value
  • ES八股相关知识
  • 渗透测试---shell(7)for循环2与while循环
  • 搜索插入位置
  • 【C++】list模拟实现(详解)
  • css:感觉稍微高级一点的布局
  • SpringBoot社团管理:安全与维护
  • 【系统架构设计师】真题论文: 论软件需求管理(包括解题思路和素材)
  • Redis 常用数据类型插入性能对比:循环插入 vs. 批量插入
  • 自主导航:机器人如何在复杂环境中找到自己的路?
  • 小程序免备案:快速部署与优化的全攻略
  • Java 查询最大最小值 详解
  • C语言教程指针笔记整理(三)
  • 如何选择服务器
  • C++之旅-set和map掌握篇
  • 深度优先搜索题目合集
  • Java语言程序设计 选填题知识点总结
  • Linux 正则表达式(basic and extened)
  • uiautomator案例
  • Excel中超链接打开文件时报错 “打开此文件的应用程序没有注册“ 的一个解决办法
  • C#构建一个简单的前馈神经网络
  • linux命令之openssl用法
  • 重绘重排、CSS树DOM树渲染树、动画加速 ✅
  • 原生Android调用uniapp项目中的方法