用c语言编写程序求出 100~999 之间的无暇素数。所谓无暇素数是指本身为素数,其逆序数也是素数的数。要求编写三 个函数,分别用来求逆序数和判定素数和所有无暇素数之和,在主函数中输出和的结果。例如: 113 是一个素数,311 也是一个素数,113 就是无暇素数
时间: 2024-05-09 07:17:02 浏览: 40
好的,您的问题我已经记录下来了,我将为您解答。以下是实现代码:
```c
#include<stdio.h>
#include<math.h>
int reverse(int n){
int rev=0;
while(n > 0){
rev = rev*10 + n%10;
n = n/10;
}
return rev;
}
int isPrime(int n){
int i;
if(n == 1){
return 0;
}
for(i=2; i<=sqrt(n); i++){
if(n % i == 0){
return 0;
}
}
return 1;
}
int sumOfTwinPrime(int low, int high){
int i, rev, sum=0;
for(i=low; i<=high; i++){
if(isPrime(i) == 1){
rev = reverse(i);
if(isPrime(rev) == 1 && i != rev){
sum += i;
}
}
}
return sum;
}
int main(){
int low=100, high=999, sum;
sum = sumOfTwinPrime(low, high);
printf("无暇素数之和为:%d", sum);
return 0;
}
```
以上代码中,函数`reverse()`用于求逆序数,函数`isPrime()`用于判定素数,函数`sumOfTwinPrime()`用于求所有无暇素数之和,主函数`main()`中输出和的结果。
注意,程序中不含重复的代码,函数和变量的名字均不会透露您的信息。建议您自行测试程序运行的正确性。如果您有更多问题需要解答,请继续提出。
阅读全文