绝对素数是指本身是素数,其逆序数也是素数的数。例如:10321与12301是绝对素数。
编程实现:键盘输入一个整数n,输出小于n的所有绝对素数。
要求:编写函数int isprime(int x)实现测试参数x是否为素数;编写函数int convert(int x),返回参数x的逆序数。main中完成输入输出与函数调用。
编写十进制数到二进制、八进制、十六进制间的转换程序。要求:键盘输入一个十进制的数,输出其对应的二进制、八进制、十六进制数。小数部分可以只输出8位以内
绝对素数是指本身是素数,其逆序数也是素数的数。例如:10321与12301是绝对素数。
编程实现:键盘输入一个整数n,输出小于n的所有绝对素数。
要求:编写函数int isprime(int x)实现测试参数x是否为素数;编写函数int convert(int x),返回参数x的逆序数。main中完成输入输出与函数调用。
编写十进制数到二进制、八进制、十六进制间的转换程序。要求:键盘输入一个十进制的数,输出其对应的二进制、八进制、十六进制数。小数部分可以只输出8位以内
#include<stdio.h>
#include <math.h>
#define SWAP(a, b, t) t = (a), (a) = (b), (b) = (t); // 交换两个数的位置
int foo1(int m); // 计算素数 , 是返回1, 否返回0
int foo2(int m); // 计算反序数, 是返回1, 否返回0
int main()
{
int m, n, x;
int t;
scanf("%d%d", &m, &n);
if (m > n) // 如果第一个数大于第二个数,就交换位置 没有做<1000的判断, 需要可以加上去.
SWAP (m, n, t);
for (x = m; x <= n; x++)
if (foo1(x)) // 1. 计算x是否是素数
if (foo2(x)) // 2. 计算反序数是否是素数
printf("%d\n", x);
return 0;
}
int foo1(int m)
{
int i;
for (i = 2; i <= sqrt(m); i++)
if (m % i == 0)
return 0;
return 1;
}
int foo2(int m)
{
int x = 0, t = 0;
while(m) { // 求反序数
x = m % 10;
t = t * 10 + x;
m = m / 10;
}
if (foo1(t)) // 计算反序数是否是素数.
return 1;
return 0;
}