解题思路: 获取最大值 - 获取最小值 ,直接判断
注意事项: 注意排好序
参考代码:
#include<stdio.h>
int isprime(int k) // isprime判断 是否 为 质数
{
int i ;
if(k<2) return 0 ; // 如果小于 2 肯定不是 质数 ,直接返回
for (i = 2 ; i*i <= k ; i++)
if(k%i == 0) return 0;
return 1;
}
int fun(int n , int k )
{
int i , j , a[n] ;
int max , min ;
for (i = 0 ; i < n ; i++)
scanf("%d" ,&a[i]) ; // 获取 数据
for (i = 0 ; i < n ; i++)
for (j = i ; j < n ; j++)
if(a[i]>a[j]){ max = a[i] ; a[i] = a[j] ; a[j] = max ; } // 比较法排序
min = a[k-1] ; // 获取 最小值
max = a[n-k] ; // 获取 最大值
if(isprime(max-min)) printf("%s\n%d","YES",max-min) ; //函数调用 判断
else printf("%s\n%d","NO",max-min) ;
}
int main()
{
int n , k ;
scanf("%d%d" ,&n,&k) ;
fun(n,k) ;
}
0.0分
0 人评分
#include<stdio.h> int su(long n) { int i,j; if(n<2) return 0; for(i=2;i<=n;i++) if(n%i==0) break; if(i==n) return 1; else return 0; } int main() { int i,j,k,n; long a[10002],t; char c[5]="YES",b[5]="NO"; scanf("%d%d",&n,&k); for(i=0;i<n;i++) scanf("%d",&a[i]); for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) { if(a[i]>a[j]) { t=a[i]; a[i]=a[j]; a[j]=t; } } t=a[n-k]-a[k-1]; if(t) printf("%s\n%d\n",c,t); else printf("%s\n%d\n",b,t); return 0; } 那我这个为啥不过啊,还错误75%??????