解题思路:先对这个数组排序,再根据下标的位置关系找到第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语言程序设计教程(第三版)课后习题5.8 (C语言代码)浏览:758 |
ASCII帮了大忙浏览:748 |
printf基础练习2 (C语言代码)浏览:942 |
C语言训练-求函数值 (C语言代码)浏览:574 |
【蟠桃记】 (C语言代码)浏览:664 |
【金明的预算方案】 (C++代码)浏览:938 |
C语言程序设计教程(第三版)课后习题8.6 (C语言代码)浏览:564 |
C语言考试练习题_保留字母 (C语言代码)浏览:700 |
C语言训练-数字母 (C语言代码)浏览:601 |
字符逆序 (C语言代码)浏览:458 |