c语言程序设计 关于回文素数
回文素数——指对一个素数n从左到右和从右到左读其结果是一样的,既称为该素数为回文素数。绝对素数——一个素数当它的数字位置对换后仍为素数,这样的数称之为绝对素数。现编程实现...
回文素数——指对一个素数n从左到右和从右到左读其结果是一样的,既称为该素数为回文素数。绝对素数——一个素数当它的数字位置对换后仍为素数,这样的数称之为绝对素数。现编程实现:输入一个整数,如果为奇数,找出不超过1000的回文素数和不超过100的绝对素数。如果为10-20之间的偶数,将其分解为两个素数之和。
展开
2个回答
推荐于2018-03-13
展开全部
/*
回文素数——指对一个素数n从左到右和从右到左读其结果是一样
的,既称为该素数为回文素数。绝对素数——一个素数当它的数字位
置对换后仍为素数,这样的数称之为绝对素数。现编程实现:输入一
个整数,如果为奇数,找出不超过1000的回文素数和不超过100的绝
对素数。如果为10-20之间的偶数,将其分解为两个素数之和
*/
#include<stdio.h>
void main(void)
{
int prime(int);
int n,i;
printf("输入一个数n: ");
scanf("%d",&n);
if(n%2)
{
for(i=100;i<1000;i++)
if(prime(i)&&prime(i%10*100+((i/10)%10)*10+i/100))
printf("%6d ",i);
}
else if((n>=10)&&(n<=20))
for(i=2;i<=n/2;i++)
if(prime(i)&&prime(n-i))
printf("%8d=%8d+%8d\n",n,i,n-i);
return;
}
int prime(int n)
{
int i;
for(i=2;i<n;i++)
if(n%i==0)break;
return i==n;
}
展开全部
#include <stdio.h>
int isPrim(int n)
{
int i;
if(n==1)return 1;
for(i=2;i<=n/2;i++)
{
if(!(n%i))return 0;
}
return 1;
}
int isPalinPrim(int n)
{
if(!isPrim(n))return 0;
if(n<10)return 1;
if(n<100)
{
if(n/10==n%10)return 1;
else return 0;
}
if(n/100==n%10)return 1;
return 0;
}
int isAlwaysPrim(int n)
{
if(!isPrim(n))return 0;
if(n<10)return 1;
if(isPrim(n%10*10+n/10))return 1;
return 0;
}
int main()
{
int n;
int pp[300]={0},ap[30]={0};
int i,j=0,k=0;
printf("请输入一个整数:");
scanf("%d",&n);
if(n%2)
{
for(i=1;i<100;i++)
{
if(isPalinPrim(i))pp[j++]=i;
if(isAlwaysPrim(i))ap[k++]=i;
}
for(i=100;i<1000;i++)
{
if(isPalinPrim(i))pp[j++]=i;
}
j=k=0;
printf("回文素数:");
while(pp[j])printf("%d ",pp[j++]);
printf("\n");
printf("绝对素数:");
while(ap[k])printf("%d ",ap[k++]);
printf("\n");
}
else if(10<=n && n<=20)
{
for(i=1;i<=n/2;i++)
{
if(isPrim(i) && isPrim(n-i))
printf("%d=%d+%d\n",n,i,n-i);
}
}
else printf("不需要做任何事情!\n");
return 0;
}
int isPrim(int n)
{
int i;
if(n==1)return 1;
for(i=2;i<=n/2;i++)
{
if(!(n%i))return 0;
}
return 1;
}
int isPalinPrim(int n)
{
if(!isPrim(n))return 0;
if(n<10)return 1;
if(n<100)
{
if(n/10==n%10)return 1;
else return 0;
}
if(n/100==n%10)return 1;
return 0;
}
int isAlwaysPrim(int n)
{
if(!isPrim(n))return 0;
if(n<10)return 1;
if(isPrim(n%10*10+n/10))return 1;
return 0;
}
int main()
{
int n;
int pp[300]={0},ap[30]={0};
int i,j=0,k=0;
printf("请输入一个整数:");
scanf("%d",&n);
if(n%2)
{
for(i=1;i<100;i++)
{
if(isPalinPrim(i))pp[j++]=i;
if(isAlwaysPrim(i))ap[k++]=i;
}
for(i=100;i<1000;i++)
{
if(isPalinPrim(i))pp[j++]=i;
}
j=k=0;
printf("回文素数:");
while(pp[j])printf("%d ",pp[j++]);
printf("\n");
printf("绝对素数:");
while(ap[k])printf("%d ",ap[k++]);
printf("\n");
}
else if(10<=n && n<=20)
{
for(i=1;i<=n/2;i++)
{
if(isPrim(i) && isPrim(n-i))
printf("%d=%d+%d\n",n,i,n-i);
}
}
else printf("不需要做任何事情!\n");
return 0;
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询