您的位置:首页 > 其它

回文数、素数的判定

2018-02-25 17:19 190 查看
题目如下:输出既是回文数又是素数的5位十进制数,并计算个数分析:回文数,即偶数位时,左右对称;奇数位时,除了中间那位,左右对称。由此判断即可。函数代码如下:
int is_huiwen(int n)
{
int i = 0, j;
int a[1000]; // 此数组用于存储数字n的每一位。注意:此数组初始化时,若开得过大,容易爆栈。
while (n)
{
a[i] = n % 10;
n /= 10;
i++;
}
for (j = 0; j < i / 2; j++, i--)
{
if (a[j] = a[i])
return 0;
}
return 1;
}

判断素数的函数代码如下:
int is_primer(int n)
{
if (n == 1)
return 0;
int m = floor (sqrt(n) + 0.5);
for (int i = 2; i <= m; i++)
{
if (n % i == 0)
return 0;
}
return 1;
}

综上,我们易得本题的解,代码如下:
#include <iostream>
#include <cmath>
#include <cstdlib>
#include <algorithm>
using namespace std;
int is_primer(int n);
int is_huiwen(int n);
const int maxn = 10;
int a[maxn];

int main()
{
int i, j, ct = 0;
for (i = 10000; i < 100000; i++)
{
if (is_primer(i) && is_huiwen(i))
{
cout << i << endl;
}
}
return 0;
}

int is_primer(int n) // 判断素数
{
if (n == 1)
return 0;
int m = floor (sqrt(n) + 0.5);
for (int i = 2; i <= m; i++)
{
if (n % i == 0)
return 0;
}
return 1;
}

int is_huiwen(int n) // 判断回文数
{
int i = 0, j;
int a[10];
while (n)
{
a[i] = n % 10;
n /= 10;
i++;
}
for (j = 0; j < i / 2; j++, i--)
{
if (a[j] = a[i])
return 0;
}
return 1;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: