【C语言】统计对称素数
对称素数 既是素数只能被 1 和自身整除的大于 1 的整数又是回文数正读和反读都相同的数如 131、151。实现思路把问题拆分为两个核心子功能再组合判断判断素数排除小于 2 的数遍历 2 到√n判断是否能被整除判断回文数将数字反转比较反转后的数是否等于原数组合判断只有同时满足 “素数” 和 “回文数”才是对称素数。#include stdio.h #include math.h #define _CRT_SECURE_NO_WARNINGS 1 // 判断是否为素数 bool isPrime(int n) { //小于2的数不是素数 if (n 2) { return false; } int i 2; // 只需遍历到√n减少循环次数 for (i2; i * i n; i) { // 能被整除不是素数 if (n % i 0) { return false; } } return true; } // 判断是否为回文数对称数 bool isPalindrome(int n) { // 负数不是回文数对称素数只考虑正整数 if (n 0) { return false; } int original n; // 保存原数 int reversed 0; // 存储反转后的数 // 反转数字 while (n 0) { // 取最低位拼到反转数中 reversed reversed * 10 n % 10; // 丢弃最低位 n n / 10; } // 反转后等于原数就是回文数 return reversed original; } // 判断是否为对称素数 bool isSymmetricPrime(int n) { // 必须同时满足是素数 是回文数 return isPrime(n) isPalindrome(n); } int main() { // 输出 5 位以内的全部对称素数 for (int i 2; i 9999; i) { int res isSymmetricPrime(i); if(res) printf(%d\n,i); } return 0; }
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2414127.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!