作业帮 > 综合 > 作业

C++ (算术)回文质数

来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/06/25 10:18:44
C++ (算术)回文质数
回文数从左边读和从右边读都是同一个数,例如1234321就是一个回文数.给出一个数n,请判断它是否既是回文数又是质数
输入格式:一个正整数n,长度不超过10
输出格式:yes / no
输入样例:13
输出样例:no
因为13不是一个回文数
输入样例:11
输出样例:yes
11是一个回文数,又是一个素数
C++ (算术)回文质数
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
/**
判断m是否为质数
@return 1:质数,0:不是质数
**/
int ss(int m){
    for(int i=2;i<=sqrt(m);i++)
        if(! (m%i))
            return 0;
    return 1;
}

/**
判断m是否为回文数
@return 1:回文,0:不是回文
**/
int huiwen(int m){
    int x=0,y;
    y=m;
    while(y){
        x = x*10 + y % 10;
        y /= 10;
    }
    if (m==x)
        return 1;
    else
        return 0;
}

int main()
{
int n;
while(scanf("%d",&n)!=EOF)
if(huiwen(n)&&ss(n))
puts("yes");
else
puts("no");
return 0;
}
再问: 用C++
再答: #include<iostream>
#include<string>
#include<algorithm>
#include<vector>
#include<sstream>
#include<cstring>
#include<math.h>
#include<stdio.h>
#include<map>
#include<set>
#include<stack>
using namespace std;
/**
判断m是否为质数
@return 1:质数,0:不是质数
**/
int ss(int m){
    for(int i=2;i<=sqrt(m);i++)
        if(! (m%i))
            return 0;
return 1;
}

/**
判断m是否为回文数
@return 1:回文,0:不是回文
**/
int huiwen(int m){
    int x=0,y;
    y=m;
    while(y){
        x = x*10 + y % 10;
        y /= 10;
    }
    if (m==x)
        return 1;
    else
        return 0;
}

int main()
{
    int n;
    while(cin>>n)
        if(huiwen(n) && ss(n))
            cout<<"yes"<<endl;
        else
            cout<<"no"<<endl;
return 0;
}