题目如下:
由题可知:该题重点在于记录单词中各字母出现次数及对素数的判断,首先对于字母出现的次数,我们可以以一个定义一个数组存储,其次在判断是否符合题意
代码如下:
#include<stdio.h>
#include<string.h>
#include<math.h>
int main(){
int count=1,length=0,arr[100],f,s=0,i,j;
char a[100]={0};
gets(a);
length=strlen(a);
for( i=0;i<=length-1;i++){
for( int j=0;j<=length-1;j++){
if(a[i]==a[j])
count++;}
arr[i]=count;
count=1;
}
for(i=0;i<length-2;i++){
for(int j=0;j<length-2-i;j++){
if(arr[j]>arr[j+1]){
int temp;
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
f=arr[length-1]-arr[0];
for(int x=2;x<=sqrt(f);x++)
{
if(f%x==0)
++s;}
if(s!=0||f==0||f==1)
{
printf("No Answer\n");
printf("0");}
else {printf("Lucky Word\n");
printf("%d",f);}
return 0;
}
当然,也可以定义函数判断是否为素数,使得代码更为工整,例如:
int prime(int n){ //素数判断
if(n == 2) //特殊情况
return 1; //是素数
int flag = 1; //默认是素数
for(int i = 2; i < n; i++){
if(n % i == 0) //不是素数
flag = 0;
}
return flag;
}
此时if语句可以如下所示
if(prime(f)==0||f==0||f==1)
{
printf("No Answer\n");
printf("0");}
else {
printf("Lucky Word\n");
printf("%d",f);}
return 0;
}
经试,答案正确