UVa 10924 - Prime Words

来源:互联网 发布:pathon编程用什么软件 编辑:程序博客网 时间:2024/05/16 03:03

题目:给出一个单词,a代表1,z代表26,A代表27,Z代表52,判断所有字母之和是不是素数。

分析:简单题。首先利用筛法打表计算出前1040中的素数,然后计算判断即可。

注意:本题中1是素数。

#include <iostream>#include <cstdlib>#include <cstdio>using namespace std;int prime[1045];int value( char c ){if ( c >= 'a' & c <= 'z' )return c-'a'+1;else return c-'A'+27;}int main(){//利用筛法,打表计算素数 for ( int i = 1 ; i <= 1040 ; ++ i )prime[i] = 1;for ( int i = 2 ; i <= 1040 ; ++ i )if ( prime[i] )for ( int j = 2*i ; j <= 1040 ; j += i )prime[j] = 0;char str[25];while ( cin >> str ) {int sum = 0;for ( int i = 0 ; str[i] ; ++ i )sum += value( str[i] );cout << "It is ";if ( !prime[sum] ) cout << "not ";cout << "a prime word." << endl;}return 0;}