内存:128  时间:1

题目描述

最近,Dr. Jiang 新设计一个机器人Bill。Bill很聪明,会做许多事情。唯独对质数的理解与人类不一样,它是从右往左读数。比如,它看到113时,会理解成311。让它比较23与19哪一个大,它说19大。原因是它的大脑会以为是32与91在进行比较。再比如,让它比较29与31,它说29大。

给Bill 两个自然数A和B,让它将 [A,B] 区间中的所有质数按从小到大排序出来。你会认为它如何排序?

输入

第一行:N 表示有多少组测试数据。 (2<=N<=5 )
接下来有 N 行,每一行有两个正整数 A,B 表示待排序元素的区间端点。(1<=A<=B<=200000, B-A<=100)

输出

对于每一行测试数据,输出一行,为所有排好序的元素,元素之间有一个空格。

样例输入

2
8 15
18 39

样例输出

11 13
31 23 37 19 29

提示

代码如下

#include<stdio.h>
#include<stdlib.h>
int a[2000];
int cmp(const void *a,const void *b)
{
    return *(int *)a-*(int *)b;
}
int chang(int n)
{
    int i,sum=0;
    while(n!=0)
    {
        i=n%10;
        n=n/10;
        sum=sum*10+i;
    }
    return sum;
}
int judge(int n)
{
    int i;
    if(n==2)
        return 1;
        if(n==1)
            return 0;
    for(i=2;i<=sqrt(n);i++)
    {
        if(n%i==0)
            return 0;
    }
    return 1;
}
int main()
{
    int n,i,k,m,p=0,s;
    scanf("%d",&k);
    for(s=1;s<=k;s++)
    {
        p=0;
        scanf("%d%d",&n,&m);
        for(i=n;i<=m;i++)
        {
            if(i==0)
                continue;
            if(judge(i)==1)
            {
                a[p]=chang(i);
                p++;
            }
        }
        qsort(a,p,sizeof(int),cmp);
        for(i=0;i<p;i++)
        {
            if(i==0)
                printf("%d",chang(a[i]));
            else
                printf(" %d",chang(a[i]));
        }
        printf("
");
    }
    return 0;
}

代码来源于互联网,仅供参考!