程序基本算法习题解析 求出100之内的所有可逆素数
题目:
可逆素数是指一个素数将其各位数字的顺序倒过来构成的反序数也是素数,求出100之内的所有可逆素数。
附上代码:
// Chapter5_4.cpp : Defines the entry point for the application.
// 求出100之内的所有可逆素数
// 可逆素数是指一个素数将其各位数字的顺序倒过来构成的反序数也是素数#include "stdafx.h"
#include
#include
using namespace std;
const int N = 99;
//判断是否为素数,是素数返回1,不是素数返回0
int isPrime(int x)
{//因为后面的for循环里面有sq,i的初始值又是从2开始,因此将2,3单独进行判断if(x==2 || x==3) return 1;else{int sq = sqrt(x);for(int i=2;i<=sq;i++){if(x%i == 0)return 0;}return 1;}
}
//判断是否为可逆素数,是可逆素数返回1,不是可逆素数返回0
//要求输入为素数
int isReverPrime(int x)
{if((x/10) == 0) //如果是一位数return 1; //是可逆素数else{int shi,ge,reverse;shi = x/10; //提取十位数ge = x - shi*10; //提取各位数reverse = ge*10+shi;//判断逆数是否为素数if(isPrime(reverse))return 1;elsereturn 0;}
}
//主函数
int main()
{//声明一个二维数组,第一行放值,第二行放素数判断情况(是素数赋为1,不是素数赋为0)int a[2][N+1],i; for(i=0;i
先写一个判断是否为素数的函数,再写一个判断该素数是否为可逆素数的函数(注意输入前提为素数)。
这个程序比较有特色的地方是声明了一个二维数组(两行,第一行放需要判断的数字,第二行放素数的判断结果:素数-1,非素数-0),第二行相当于常用的flag标志,内存占用会多一点,但是理解起来简单一些。
运行结果如下:
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!