解题思路:先对这个数组排序,再根据下标的位置关系找到第k大和第k小的数,最后对其差值判断是否为素数。
注意事项:1.容易忽略当差值小于2的情况,素数是从大于二开始。2.判断是否为素数的时候可能使代码运行超时,可将从2到sqrt(x)的循环改为从2到x/2+1。
参考代码:
#include<stdio.h>
int main()
{
int n,i,a[10000],j,m,k;
int max,t,flag=1;
scanf("%d%d",&n,&k);
for(i=0; i<n; i++)
{
scanf("%d",&a[i]);
}
for(i=0; i<n-1; i++)
{
max=a[i];
t=i;
for(j=i+1; j<n; j++)
{
if(a[j]<max)
{
max=a[j];
t=j;
}
}
a[t]=a[i];
a[i]=max;
}
for(i=0; i<n; i++)
{
m=a[n-k]-a[k-1];
}
if(m<2)
{
flag=0;
}
else
{
for(i=2; i<m/2+1; i++)
{
if(m%i==0)
{
flag=0;
}
}
}
if(flag==1)
printf("YES\n");
else
printf("NO\n");
printf("%d\n",m);
return 0;
}
0.0分
3 人评分
【明明的随机数】 (C语言代码)浏览:788 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:262 |
幸运数 (C++代码)浏览:1266 |
C语言程序设计教程(第三版)课后习题5.5 (C语言代码)浏览:560 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:609 |
1124题解浏览:595 |
C语言程序设计教程(第三版)课后习题6.8 (C语言代码)浏览:617 |
矩阵转置 (C语言代码)浏览:784 |
简单的a+b (C语言代码)浏览:443 |
C语言训练-斐波纳契数列 (C语言代码)浏览:600 |