1.专门用一个长度为26的数组来记录各个字母出现的次数
2.遍历计数数组找到max和min
3.检查差值是否为质数
#include <stdio.h>
#include <math.h>
int main(){
int arr[26] = {0}; //计数数组
char s;
int i = 0, min = 100, max = 0;
while(scanf("%c", &s) != EOF){
arr[s - 'a']++;
}//对各个字母出现次数计数,a记在arr[0],b在arr[1],以此类推
for(i = 0; i < 26; i++){
if(arr[i] == 0) //对于次数为0即没出现过的字母不进行max和min的比较
continue;
if(max < arr[i])
max = arr[i];
if(min > arr[i] )
min = arr[i];
}
int k = max - min;
if(isprime(k) == 1){ //检验是否为质数
printf("Lucky Word\n");
printf("%d",k);
return 0;
}
printf("No Answer\n");
printf("0");
return 0;
}
int isprime(int n){ //检验质数的函数
if(n<2)
return 0; //0和1不是质数
int flag = 1;
for(int i = 2; i<=sqrt(n); i++)
if(n % i == 0){
flag = 0;
break;
}
return flag;
}

京公网安备 11010502036488号