回文素数----函数

题目

题目描述

如果一个数即是回文数又是素数(质数)的话,则称这个数为回文素数。

其中回文数的定义为,如果一个数从左边看和从右边看一样,则该数称为回文数。如数字12321就是个回文数。

请输出从100~n的所有回文素数。
输入格式

一个整数n。
输出格式

从100~n的所有回文素数,空格隔开。
数据范围

对50%的数据,100<n<=999;

对100%的数据,100<n<=10^6。
提示

小T的思路为:定义两个函数is_hw()和is_ss()分别用于判断一个数是不是回文数/素数,若是回文数/素数则函数返回一个数字1,否则返回0。

然后结合两个函数的返回值结果来判定其是否为回文素数。
下方是小T未完成的程序,请在此基础上将程序补充完整。

cpp 复制代码
#include <iostream>
using namespace std;

int is_hw(int a){

}

int is_ss(int a){

}

int main(){
    int n;
    cin >> n;
    for(int i = 100; i <= n; i++){
        if(________){
            cout << i << " ";
        }
    }
    return 0;
}

解答

为了完成这个程序,我们需要首先定义is_hw和is_ss两个函数。is_hw函数用于判断一个数是否是回文数,而is_ss函数用于判断一个数是否是素数。

is_hw 函数

cpp 复制代码
int is_hw(int a) {  
    int temp = a, reversed = 0;  
    while (temp > 0) {  
        reversed = reversed * 10 + temp % 10;  
        temp /= 10;  
    }  
    return a == reversed ? 1 : 0;  
}

这个函数首先将输入的整数a保存到一个临时变量temp中,然后初始化一个变量reversed为0,用于存储a的反转数字。接着,使用一个循环来反转数字,每次取temp的个位数加到reversed的末尾,并将temp整除10。最后,比较反转后的数字和原始数字是否相同,如果相同则返回1(表示是回文数),否则返回0。

is_ss 函数

cpp 复制代码
int is_ss(int a) {  
    if (a <= 1) return 0;  
    for (int i = 2; i * i <= a; ++i) {  
        if (a % i == 0) return 0;  
    }  
    return 1;  
}

这个函数首先检查a是否小于或等于1,如果是则返回0(不是素数)。然后,使用一个循环从2开始到sqrt(a)(因为如果一个数a是合数,它必有一个小于或等于它平方根的因数),检查a是否能被这个范围内的任何数字整除。如果可以,则返回0(不是素数);否则,返回1(是素数)。

main 函数

在main函数中,我们需要填充条件判断部分,以检查从100到n的每个数是否同时是回文数和素数。

cpp 复制代码
int main() {  
    int n;  
    cin >> n;  
    for (int i = 100; i <= n; i++) {  
        if (is_hw(i) && is_ss(i)) {  
            cout << i << " ";  
        }  
    }  
    return 0;  
}

在这里,我们使用is_hw(i) && is_ss(i)作为条件判断,这意味着只有当i同时是回文数和素数时,才会被打印出来。注意,题目要求输出的范围是从100开始,所以我们从100开始循环。

现在,整个程序已经完整,并且可以正确地输出从100到n的所有回文素数。

相关推荐
汉克老师9 分钟前
第十四届蓝桥杯青少组C++选拔赛[2023.1.15]第二部分编程题(2 、寻宝石)
c++·蓝桥杯·蓝桥杯c++·c++蓝桥杯·蓝桥杯选拔赛
Jelena技术达人10 分钟前
淘宝/天猫按图搜索(拍立淘)item_search_img API接口实战指南
算法·图搜索算法
大锦终11 分钟前
【Linux】进程间通信
linux·运维·服务器·c++
闪电麦坤9514 分钟前
C/C++项目练习:命令行记账本
开发语言·c++
Adorable老犀牛20 分钟前
阿里云-基于通义灵码实现高效 AI 编码 | 8 | 上手实操:LeetCode学习宝典,通义灵码赋能算法高效突破
学习·算法·leetcode
望获linux26 分钟前
【实时Linux实战系列】规避缺页中断:mlock/hugetlb 与页面预热
java·linux·服务器·数据库·chrome·算法
菜就多练,以前是以前,现在是现在27 分钟前
Codeforces Round 1048 (Div. 2)
数据结构·c++·算法
林木辛1 小时前
LeetCode 热题 160.相交链表(双指针)
算法·leetcode·链表
野生的编程萌新1 小时前
【C++深学日志】从0开始的C++生活
c语言·开发语言·c++·算法
木心爱编程1 小时前
C++程序员速通C#:从Hello World到数据类型
c++·c#