一个自然数是质数,且它的数字位置经过任意对换后仍为质数,则称为绝对质数,例如,13。用C语言编程求所有两位绝对质数
时间: 2024-12-08 08:19:30 浏览: 11
寻找两位绝对质数需要遍历所有两位数,并检查它们是否既是质数又是交换数字顺序后依然为质数。下面是一个简单的C语言代码示例来完成这个任务:
```c
#include <stdio.h>
#include <stdbool.h>
bool is_prime(int num) {
if (num <= 1) return false;
for (int i = 2; i * i <= num; ++i) {
if (num % i == 0) return false;
}
return true;
}
bool is_absolutely_prime(int num) {
// 对数字进行排序并比较原数和排序后的结果
int sorted_num[2] = {num % 10, num / 10};
qsort(sorted_num, 2, sizeof(sorted_num[0]), compare_ints);
// 检查排序后的数字仍然是不是质数
return is_prime(num) && is_prime(sorted_num[0] * 10 + sorted_num[1]);
}
// 自定义整型数组的比较函数
int compare_ints(const void* a, const void* b) {
return (*(int*)a - *(int*)b);
}
int main() {
for (int num = 10; num < 100; ++num) {
if (is_absolutely_prime(num)) {
printf("%d 是两位绝对质数.\n", num);
}
}
return 0;
}
```
这段代码首先定义了一个判断质数的辅助函数 `is_prime`,然后创建了 `is_absolutely_prime` 函数来同时检查原始数字和排序后的数字是否都是质数。主函数中遍历10到99的所有两位数,找出符合条件的绝对质数。
阅读全文