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; }