[心得] 0.004
用一個MAP(255 ASCII 最大好像255)陣列,存每個字母出現次數, 如果出現次數大於2才需要判斷(用暴力法判斷是否為質數) ,1非質數
#include <stdio.h>
#include <stdbool.h>
int record;
bool isprime(int temp)
{
int k;
for(k=2;k<temp;k++)
{
if(temp%k==0)
{
return false;
}
}
record =1;
return true;
}
int main()
{
int data,i,length,counter=0;
bool flag= false;
scanf("%d",&data);
scanf("\n");
while(data)
{
char s[2002];
while(gets(s)!=NULL)
{
int map[256]={0};
record=0;
data--;
counter++;
length =strlen(s);
printf("Case %d: ",counter);
/*for(i=0;i<length;i++)
printf("s[%d]= %c\n",i,s[i]);*/
for(i=0;i<length;i++)
map[s[i]]++;
/*for(i=0;i<255;i++)
printf("map[%d]= %d\n",i,map[i]); */
for(i=0;i<255;i++)
{
if(map[i]>=2)
flag = isprime(map[i]);
if(flag)
{
printf("%c",i);
flag =false;
}
}
if(!record)
printf("empty\n");
else
printf("\n");
}
}
system("pause");
return 0;
}
沒有留言:
張貼留言