Palavras primas

3 respostas
G

Fala galera,
Olha só estou com algumas dúvidas quanto ao seguinte problema. Tenho que atribuir valores de 1 a 26 às letras a a z e 27 a 54 às letras A a Z. Depois digitar uma palavra e verificar se a soma das letras dessa palavra é um número primo. Consegui verificar se o número é primo, mas estou com dificuldades para ler uma palavra e atribuir valores às letras. Se alguém tiver uma idéia de como fazer me ajudem por favor!!
Abraços

3 Respostas

D

é só vc usar um map com com a chave o numero e letra.

Say

^^
Tô com a mesma duvida do rapaz ali em cima,
num entendi o que voce quis dizer…

como assim map

ViniGodoy

Todo char é, na verdade, um número, definido na tabela unicode. Para os chars de letras sem acento e números, esse número é igual ao valor correspondente na tabela ascii.

O char A tem o valor 65, o char B tem o valor 66, e assim por diante. Letras minúsculas tem outros valores. Acentuadas também.

Para calcular, a forma mais fácil é converter o char em seu valor numériro, e subtrair 64. Dessa forma, a letra A valerá 1, B valerá 2, e assim sucessivamente.

char letra = 'A'; int valor = ((int)letra)-64; System.out.println(valor);

Outra forma de associar uma letra a um número, é através de um Map. Procure o tópico do colega que disse que tem a mesma dúvida que você, já que tem um exemplo lá.

Para o seu caso específico, o seguinte método faz a conversão:

public int charParaNumero(char letra) { if (letra >= 'a' && letra <= 'z') return ((int)letra)-96; //Valor da letra 'a' é 97 if (letra >='A' && letra <= 'Z') return ((int)letra)-38; //Valor da letra 'A' é 65. 65-38 = 27. return 0; //Outros caracteres serão desconsiderados. }

Criado 29 de novembro de 2009
Ultima resposta 30 de nov. de 2009
Respostas 3
Participantes 4