早教吧 育儿知识 作业答案 考试题库 百科 知识分享

用来判断整数d是否为素数:intPrime(intd);而后编制主函数,任意输入一个数d,判断其是否为可逆素数,即若输入数d为12345,判断其是否素数,若是素数,则判断54321是否也为素数。如果皆为

题目详情
用来判断整数d是否为素数:intPrime(intd);而后编制主函数,任意输入一个数d,判断其是否为可逆素数,即若输入数d为12345,判断其是否素数,若是素数,则判断54321是否也为素数。如果皆为素数的话,该数d为可逆素数;在d为可逆素数的基础上,xd=d+1为偶数,找出满足xd=d1+d2的所有数对,其中要求d1与d2均为素数(通过调用prime来判断素数)。如偶数18可以分解为11+7以及13+5;而偶数80可以分解为:43+37、61+19、67+13、73+7。
提示:i与xd-i的和恰为偶数xd,而且只有当i与xd-i均为奇数时才有可能成为所求的“数对”。
▼优质解答
答案和解析
#include <stdio.h>
int prime(int d){
int i;
if (d<=3) return 1;      //小于3的都是素数
for(i=2;i*i<=d;i++)
if(d%i==0) return 0;
return 1;
}
int fz(int d){  //翻转数
int x=0;
while(d){
x=x*10+d%10;
d/=10;
}
return x;
}
int main(){
int d,xd,i;
scanf("%d",&d);
if (prime(d)==1 && prime(fz(d))==1){
printf("%d是可逆素数\n",d);
xd=d+1;
printf("%d可以分解为:",xd);
for(i=3;i<=xd/2;i++){
if (prime(i)==1 && prime(xd-i)==1)
printf("%d+%d  ",xd-i,i);
}
}
else
printf("%d不是可逆素数\n",d);
}