永发信息网

编程素数问题

答案:1  悬赏:20  手机版
解决时间 2021-07-30 17:30
  • 提问者网友:嗝是迷路的屁
  • 2021-07-30 08:27

请输入一个大于2且不大于200的整数,判断该数是否为偶数,如果是偶数,将该偶数分解为两个素数之和。如果是奇数,判断该数是否为素数,如果是素数,判断该素数是否为回文素数,并找出该数的孪生素数。

“回文素数”是指一个数正读和反读都一样的素数,例如:11、121;

“孪生素数”是指一个素数与其相差为2的数也是素数,例如:3和5、5和7等。

最佳答案
  • 五星知识达人网友:玩家
  • 2021-07-30 08:56

前几天刚好也有同学问了这道题,以下程序在VC中编译执行通过。


#include "stdio.h"



#include "math.h"
#define num 100
bool jiou(int n) //判断奇偶数
{
bool k;
if(n%2) k=true;
else k=false;
return k;


}


int sushu(int n) //判断素数
{
if(n<=1) return 0;
int j,k=0,temp=sqrt(n);
for(j=2;j<=temp;j++)
{
if((n%j)==0) break;


}
if(j>temp) return 1;
else return 0;



}
int huishu(int n) //回文素数
{
int temp=n,b=0,i, k=0;
for(i=0;n>0;n/=10,i++)
{b=(b*10)+n%10;}
if(b==temp) k=1;
return k;
}


void fengjie(int n) //偶数分解成两个素数
{
int i;
for(i=2;i<n;i++)
{
if(sushu(i)&&sushu(n-i))
{
printf("%d=%d+%d\n",n,i,n-i);
}
}


}



void main()
{
int n;
printf("请输入一个大于2且小于200的数:\n");
scanf("%d",&n);
if(n<2||n>200)return ;
int a,b;
a=n+2;
b=n-2;
if(jiou(n))
{
if(sushu(n))
{
printf("这个数为素数,");
if(huishu(n))
{
printf("回文,");
}
else printf("非回文,");
if(sushu(a)||sushu(b))
{
printf("有孪生素数:");
if(sushu(a))printf("%d ",a);
if(sushu(b))printf("%d",b);
printf ("\n");
}
else printf("无孪生素数。");


}
else printf("此数不是素数。");


}
else fengjie(n);
}

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯