解题思路:先对这个数组排序,再根据下标的位置关系找到第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 人评分
1642题解浏览:708 |
C语言程序设计教程(第三版)课后习题8.4 (C语言代码)浏览:520 |
1011题解浏览:760 |
简单的a+b (C语言代码)浏览:524 |
勾股数 (C语言代码)浏览:799 |
C语言程序设计教程(第三版)课后习题10.5 (C语言代码)浏览:946 |
C语言训练-排序问题<1> (C语言代码)浏览:355 |
字符删除 (C语言代码)浏览:714 |
C语言训练-斐波纳契数列 (C语言代码)浏览:503 |
简单的a+b (C语言代码)浏览:645 |