五位以内的对称素数

五位以内的对称素数

时间: 1ms        内存:64M

描述:

判断一个数是否为对称且不大于五位数的素数。

输入:

输入数据含有不多于50个的正整数(0<n<232)。

输出:

对于每个n,如果该数是不大于五位数的对称素数,则输出“Yes”,否则输出“No”。每个判断结果单独列一行。

示例输入:

11 101 272

示例输出:

Yes
Yes
No

提示:

参考答案(内存最优[752]):

/*判断小于五位数的对称素数*/
#include<stdio.h> 
int P(int a)//建立一个判断素数的函数 
{ 
    int i; 
    for(i=2;i<=a/2;i++) 
        if(a%i==0) 
            return 0;//否返回0 
        return 1;//是返回1 
} 
int dc(int a)//判断是否对称 
{ 
    int i=1,c=11,j=0,a1,a2,a3,a4,a5; 
    while(c>=10)//判断几位数 
    { 
        c=a/i; 
        i=i*10; 
        j++; 
    } 
    switch(j)//找出每一位数,判断是否对称 
    { 
    case 1:return 0; 
    case 2:{a1=a%10;a2=(a%100-a1)/10;if(a1==a2)return 1;else return 0;} 
    case 3:{a1=a%10;a2=(a%100-a1)/10;a3=(a%1000-a1-a2)/100;if(a1==a3)return 1;else return 0;} 
    case 4:{a1=a%10;a2=(a%100-a1)/10;a3=(a%1000-a1-a2)/100;a4=(a%10000-a1-a2-a3)/1000;if(a1==a4&&a2==a3)return 1;else return 0;} 
    case 5:{a1=a%10;a2=(a%100-a1)/10;a3=(a%1000-a1-a2)/100;a4=(a%10000-a1-a2-a3)/1000;a5=a/10000;if(a1==a4&&a2==a3)return 1;else return 0;} 
    } 
    return 0; 
} 
void main() 
{ 
    int n,i=0; 
      
    while(scanf("%d",&n)!=EOF&&i<=50)//多组数据 
    { 
          
      
        i++; 
        if(n<=99999&&n>0) 
        { 
            if(dc(n)==1&&P(n)==1) 
                printf("Yes\n"); 
            else
                printf("No\n"); 
        } 
        else
            printf("No\n"); 
    } 
}

参考答案(时间最优[0]):

#include<stdio.h>
#include<math.h>
int main(){
	int test(int n);
	int cheak(int n);
	int n;
	while(scanf("%d",&n)==1){
		if(test(n)){
			if(cheak(n)){
				printf("Yes\n");
			}else{printf("No\n");}
			
		}else{printf("No\n");}	
		
	}	
	return 0;
}
int test(int n){
	int a[5];
	int i=0,j;	
	do{
		a[i++]=n%10;
		n=n/10;	
	}while(n/10);
	a[i]=n%10;
	for(j=0;j<=i;j++,i--){
		if(a[i]!=a[j])break;	
	}
	if(j>=i){return 1;
	}else {return 0;}	
}
int cheak(int n){
	int i,t;
	if(n==2)return 1;
	t=(int)sqrt(n);
	for(i=2;i<t;i++){
		if(n%i==0)break;
	}
	if(i>=t){return 1;
	}else{return 0;}
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注