绝对素数概念
首先,我们要了解什么是绝对素数。
素数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。
绝对素数是指本身是素数,其逆序数也是素数的数。例如:10321与12301是绝对素数。
了解了这个概念之后,我们一步步来写代码
题目:输出1-1000之内的绝对素数
代码如下:
#include <stdio.h>
#include <stdbool.h>
// 函数用于检查一个数是否为素数
bool isPrime(int num) {
if (num <= 1) {
return false;
}
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
// 函数用于计算一个数的逆序数
int reverseNumber(int num) {
int reversed = 0;
while (num > 0) {
reversed = reversed * 10 + num % 10;
num /= 10;
}
return reversed;
}
int main() {
printf("绝对素数:\n");
for (int i = 2; i <= 1000; i++) {
if (isPrime(i)) {
int reversed = reverseNumber(i);
if (isPrime(reversed) && reversed != i) {
printf("%3d是绝对素数\n", i);
}
}
}
return 0;
}
reverseNumber这个函数实现是怎么想到的?
计算一个数的逆序数的方法其实是一个常见的数学问题,通常可以通过对该数字进行取余和整除操作来实现。当我们需要计算一个数的逆序数时,我们可以按照以下步骤进行:
- 初始化一个变量
reversed
为0,用来存储逆序后的数字。 - 对原始数字进行循环操作,每次取原始数字的个位数,并将其加到
reversed
的末尾。 - 在每一步中,将原始数字除以10,以便在下一次迭代中获得下一个数字。
- 重复这个过程,直到原始数字变为0。
举个例子,假设我们要计算123的逆序数:
- 初始化
reversed
为0。 - 第一步:取123的个位数3,将其加到
reversed
的末尾,此时reversed
为3。 - 第二步:将123除以10得到12(整除,舍去小数部分)。
- 第三步:取12的个位数2,将其加到
reversed
的末尾,此时reversed
为32。 - 第四步:将12除以10得到1。
- 第五步:取1的个位数1,将其加到
reversed
的末尾,此时reversed
为321。 - 最后,原始数字变为0,计算结束。
这样,我们就得到了123的逆序数321。在C语言中,我们可以通过取余和整除操作来实现这个过程,具体实现就如上文中的reverseNumber
函数所示。
现学现卖,欢迎指正,嘻嘻。