一道简单的C语言题目

【问题描述】若将某一素数的各位数字的顺序颠倒后得到的数仍是素数,则此素数称为可逆素数。编写一个判断某数是否可逆素数的函数,在主函数中输入一个整数,再调用此函数进行判断【输... 【问题描述】若将某一素数的各位数字的顺序颠倒后得到的数仍是素数,则此素数称为可逆素数。编写一个判断某数是否可逆素数的函数,在主函数中输入一个整数,再调用此函数进行判断
【输入形式】用户在第一行输入一个整数。
【输出形式】程序在下一行输出yes或是no,yes表示此数是可逆素数,no表示不是。用户输入的数必须为正整数。注意:yes或是no全是小写输出。
【样例输入】23
【样例输出】no
【样例说明】用户输入23,23各位数字颠倒之后得到32,23是素数,但32不是素数,所以23不是可逆素数。
展开
 我来答
笃侠6A
2011-11-10 · TA获得超过3735个赞
知道大有可为答主
回答量:3205
采纳率:75%
帮助的人:3509万
展开全部
看看这个程序可满意:
#include <stdio.h>
#include <math.h>
int isprime(long n) //判断n是否为素数
{
int i,f=1,k=abs(n);
for(i=2;f==1 && i<=k;i++)
f=n%i;
return f;
}
void main()
{
long m,n;
int i,d;
scanf("%ld",&m);
if(isprime(m)){ //如果m是素数,则求其逆数n
n=0;
while(m!=0){
d=m%10;
n=n*10+d;
m=m/10;
}
if(isprime(n)){
printf("yes\n");
return;
}
}
printf("no\n");
}
匿名用户
2011-11-03
展开全部
#include <stdio.h>
#include <math.h>
int isPrium(int a)
{
int i,n;
n = a;
for(i = 2; i <n ;i++)
{
if(n%i == 0)
{
printf("你输入的数不是素数,请重新输入");
scanf("%d",&n);
isPrium(n);
break;
}
}
int count = 0,m;
/* while(n) //获得输入为是几位数
{
n /=10;
count++;
}
*/ while(a)
{
m +=a%10 *pow(10,count);
a /=10;
count ++;
}

for(i = 2; i <m ;i++)
{
if(m%i == 0)
{
return 0;
}
}
return 1;
}

void main()
{
int n ;
scanf("%d",&n);
if(isPrium(n))
{
printf("yes");
}
else
{
printf("no");
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
幻湖葬月
2011-11-04 · TA获得超过306个赞
知道答主
回答量:290
采纳率:0%
帮助的人:200万
展开全部
#include<stdio.h>
#include<ctype.h>
#include<stdlib.h> //头文件
#include<math.h>

int isprime(long n) //判断素数的函数
{
int i,sqr,flag=1;
sqr=(int)sqrt(n);
for(i=3;i<=sqr;i+=2) //判断大于9的素数
if(n%i==0)
{
flag=0;
break;
}
if(n==1||n%2==0) //判断小于9的非素数
flag=0;
return flag;
}

int main() //主函数
{
int i,j=0;
long m,n;
char p[6]="",ch,tmp;
printf("输入一个整数:\n");
for(i=0;i<5;i++) //防止数组超出边界
if((ch=getchar())=='\n')
break;
else
p[j++]=ch;
for(i=0;p[i]!='\0';i++) //判断输入是否为整数
if(!isdigit(p[i]))
{
printf("输入不是整数:\n");
exit(1);
}
m=atol(p);
if(!isprime(m))
{
printf("%ld不是可逆素数\n",m);
exit(1);
}

for(i=0,j=j-1;i<j;i++,j--)
{tmp=p[i],p[i]=p[j],p[j]=tmp;}
n=atol(p);
if(!isprime(n))
{
printf("%ld不是可逆素数\n",m);
exit(1);
}
printf("%ld是可逆素数\n",m);
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
番茄大圣
2011-11-03
知道答主
回答量:40
采纳率:0%
帮助的人:14.2万
展开全部
我说一下我的思路吧
一、用辗转相除法判断输入的整数是不是素数,如果不是,输出NO,如果是,执行第二步。
二、用除法将输入的整数拆分,然后对调组合,得到逆数
三、用辗转相除法判断逆数是不是素数,如果不是,输出no,如果是,输出yes。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
手机用户64224
2011-11-04 · TA获得超过143个赞
知道答主
回答量:180
采纳率:100%
帮助的人:146万
展开全部
getchar是从键盘终端输入一个字符,任何输入的字符都算,包括回车
所以由上知道:
printf("a=%d b=%d c=%d\n",a,b,c);// 以十进制整形输出,则分别输出的是‘1’,‘回车符’,’a‘的asc码,即a=13 b=49 c= 97
printf("a= %c b=%c c=%c/n",a,b,c);// 以字符的形式输出,则分别输出的是‘1’,‘回车符’,’a‘,即a=1 b=
c= a
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式