单点时限: 2.0 sec
内存限制: 512 MB
问题描述
输入格式
输出格式
样例:
问题分析:
提示:素数判断方法有很多。
注意点:1既不是素数也不是合数,2也不是合数
考察点:排序
代码解决部分:
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
#include<math.h>
typedef long long int lli;
typedef struct
{
int x;
int y;
int num;
}huashi;
int isprime(int x)
{
int ret=1;
int i;
if((x==1)||(x%2==0&&x!=2))
ret=0;
for(i=3;i<sqrt(x);i+=2)
{
if(x%i==0)
{
ret=0;
break;
}
}
return ret;
}
int p(int x,int y)
{
int n=0;//这边n一定要赋予初值!!!
for(int i=x;i<=y;i++)
{
if(isprime(i)) n++;
}
return n;
}
int cmp(const void* a,const void* b)
{
huashi* a1=(huashi*)a;
huashi* b1=(huashi*)b;
// printf("!!a1=%d,b1=%d\n",a1->num,b1->num);
if((a1->num)!=(b1->num))
{
return (a1->num)<(b1->num)?-1:1;
}
else if((a1->x)!=(b1->x))return (a1->x)<(b1->x)?-1:1;
else return ((a1->y)<(b1->y))?-1:1;
}
int main()
{
int t;
scanf("%d",&t);
for(int i=0;i<t;i++)
{
int n;
scanf("%d",&n);
huashi a[n];
memset (a,0,sizeof(a));
for(int j=0;j<n;j++)
{
scanf("%d%d",&a[j].x,&a[j].y);
int l=p(a[j].x,a[j].y);
a[j].num=l;
}
qsort(a,n,sizeof(a[0]),cmp);
printf("case #%d:\n",i);
for(int k=0;k<n;k++)
printf("%d %d\n",a[k].x,a[k].y);
}
return 0;
}
解释: