
C语言题目,急!!
【问题描述】若将某一素数的各位数字的顺序颠倒后得到的数仍是素数,则此素数称为可逆素数。编写一个判断某数是否可逆素数的函数,在主函数中输入一个整数,再调用此函数进行判断【输...
【问题描述】若将某一素数的各位数字的顺序颠倒后得到的数仍是素数,则此素数称为可逆素数。编写一个判断某数是否可逆素数的函数,在主函数中输入一个整数,再调用此函数进行判断
【输入形式】用户在第一行输入一个整数。
【输出形式】程序在下一行输出yes或是no,yes表示此数是可逆素数,no表示不是。用户输入的数必须为正整数。注意:yes或是no全是小写输出。
【样例输入】23
【样例输出】no
【样例说明】用户输入23,23各位数字颠倒之后得到32,23是素数,但32不是素数,所以23不是可逆素数。 展开
【输入形式】用户在第一行输入一个整数。
【输出形式】程序在下一行输出yes或是no,yes表示此数是可逆素数,no表示不是。用户输入的数必须为正整数。注意:yes或是no全是小写输出。
【样例输入】23
【样例输出】no
【样例说明】用户输入23,23各位数字颠倒之后得到32,23是素数,但32不是素数,所以23不是可逆素数。 展开
3个回答
展开全部
思路:
首先你要确定这个函数要处理的素数的最大位数有几位,因为素数是有无穷多的!
程序流程:
1.例如你要处理一个最大不超过5位数的素数,第一步就算要将这个素数从最大位数取余数,然后到第二3.4.5.把输入的数字,拆分成几个数字,并分别把他们存到一个变量里面,这里有一点需要注意,如果素数位数只有2位或者3位,其他的变量请对他们赋一个特殊的值,例如-1什么的方便后面的处理
2.然后用排列组合的规则对这5个变量排序并用一个数组记录每次排序后的数字。
3.就是对上面的数组的每一个量进行求最大公约数处理,网上很多源代码的直接下就行了。如果最大公约数是这个变量里面的数本身,那么这个数就是素数如果不是就继续测试下一个数,否则返回一个值,代理这个数不是自己想要的数 调用函数输出no!
首先你要确定这个函数要处理的素数的最大位数有几位,因为素数是有无穷多的!
程序流程:
1.例如你要处理一个最大不超过5位数的素数,第一步就算要将这个素数从最大位数取余数,然后到第二3.4.5.把输入的数字,拆分成几个数字,并分别把他们存到一个变量里面,这里有一点需要注意,如果素数位数只有2位或者3位,其他的变量请对他们赋一个特殊的值,例如-1什么的方便后面的处理
2.然后用排列组合的规则对这5个变量排序并用一个数组记录每次排序后的数字。
3.就是对上面的数组的每一个量进行求最大公约数处理,网上很多源代码的直接下就行了。如果最大公约数是这个变量里面的数本身,那么这个数就是素数如果不是就继续测试下一个数,否则返回一个值,代理这个数不是自己想要的数 调用函数输出no!
展开全部
#include<stdio.h>
#include<math.h>
int isprime(int n)
{
double k=sqrt((double)(n+1));
int i,flag=0;
for(i=2;i<k;i++)
if(n%i==0)
{
flag=1;
break;
}
if(flag)
return 0;
return 1;
}
int main()
{
int n,i,m,flag=0,a[100],j;
double k;
scanf("%d",&n);
if(n==1)
printf("no\n");
else
{
if(!isprime(n))
printf("no\n");
else
{
i=0;
m=0;
while(n)
{
a[i++]=n%10;
n/=10;
}
for(j=0;j<i;j++)
m=m*10+a[j];
if(!isprime(m))
printf("no\n");
else
printf("yes\n");
}
}
}
#include<math.h>
int isprime(int n)
{
double k=sqrt((double)(n+1));
int i,flag=0;
for(i=2;i<k;i++)
if(n%i==0)
{
flag=1;
break;
}
if(flag)
return 0;
return 1;
}
int main()
{
int n,i,m,flag=0,a[100],j;
double k;
scanf("%d",&n);
if(n==1)
printf("no\n");
else
{
if(!isprime(n))
printf("no\n");
else
{
i=0;
m=0;
while(n)
{
a[i++]=n%10;
n/=10;
}
for(j=0;j<i;j++)
m=m*10+a[j];
if(!isprime(m))
printf("no\n");
else
printf("yes\n");
}
}
}
追问
字符串复制。输入一个字符串t和一个正整数m,将字符串t中从第m个字符开始的全部字符复制到字符串s中,再输出字符串s。要求定义并调用函数strmcpy(s,t,m),它的功能是将字符串t中从第m个字符开始的全部字符复制到字符串s中。
追答
#include
#include
#include
void strmcpy(char s[],char t[],int m)
{
int i,len=strlen(t);
for(i=m-1;i<len;i++)
s[i-m+1]=t[i];
s[len-m+1]='\0';
}
int main()
{
char t[20],s[20];
int m;
scanf("%s%d",t,&m);
strmcpy(s,t,m);
printf("%s",s);
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>
#include<math.h>
int isprime(int x)
{
int i=0;
int y=sqrt((float)x);
for(i=2;i<y;i++)
{
if(x%i==0)
return 0;
}
return 1;
}
int reverse(int x)
{
int z=0;
while(x)
{
z=z*10;
z+=x%10;
x=x/10;
}
return z;
}
void main()
{
int z=0;
int i=0;
int x;
printf("输入一个数\r\n");
scanf("%d",&x);
i=isprime(x);
if(i==0)
{
printf("输入不是素数!");
return ;
}
z=reverse(x);
i=isprime(z);
if(i==0)
{
printf("不是可逆素数!");
return ;
}
printf("是可逆素数");
}
#include<math.h>
int isprime(int x)
{
int i=0;
int y=sqrt((float)x);
for(i=2;i<y;i++)
{
if(x%i==0)
return 0;
}
return 1;
}
int reverse(int x)
{
int z=0;
while(x)
{
z=z*10;
z+=x%10;
x=x/10;
}
return z;
}
void main()
{
int z=0;
int i=0;
int x;
printf("输入一个数\r\n");
scanf("%d",&x);
i=isprime(x);
if(i==0)
{
printf("输入不是素数!");
return ;
}
z=reverse(x);
i=isprime(z);
if(i==0)
{
printf("不是可逆素数!");
return ;
}
printf("是可逆素数");
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询