给定一个长度为N(0< n< =10000)的序列,保证每一个序列中的数字a[i]是小于maxlongint的非负整数 ,编程要求求出整个序列中第k大的数字减去第k小的数字的值m,并判断m是否为质数。(0< k< =n)
#include<stdio.h>
#include<math.h>
int puanduan(int x)//判断是否是质数
{
int flag=1;
for(int i=1;i<=sqrt(x);i++)
if(x%i==0)
flag=0;
if(x<=2)
flag=1;
return flag;
}
int main()
{
int n,k,a[100001],temp,m;
scanf("%d %d",&n,&k);
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
for(int i=0;i<n;i++)//给数组排序
{
for(int j=0;j<n-i-1;j++)
{
if(a[j]>a[i+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
m=a[n-k]-a[k-1];
if(puanduan(m))//质数输出yes,非质数输出NO
printf("YES\n");
else
printf("NO\n");
printf("%d",m);
for(int i=0;i<n;i++)
printf("%d",a[i]);
}