天天看點

UVA - 10924 - Prime Words (素數)

輸入一個由大小寫字母組成的字元串,每個字元代表着不同的數字,計算出這個字元串的數值,判斷是否是素數;

首先我們打個素數表;

然後利用ascll碼存入數組中,然後判斷就ok了

還有一點!!!這個題中 1 算素數!!!

wr無數次,還是讀題不仔細

#include<iostream>
#include<cstring>
#include<cmath>
#define MAXN 30

using namespace std;

char str[MAXN];
bool vis[];

int checkprime(int n) {
    int m = sqrt(n+);
    memset(vis, true, sizeof(vis));
    vis[] = false;
    for(int i = ; i <= m; i++) {
        if(vis[i]) {
            for(int j = i*i; j <= n; j+=i) {
                vis[j] = false;
            }
        }
    }
}

int main() {
    checkprime();
    while(~scanf("%s", str)) {
        int sum = ;
        int len = strlen(str);
        for(int i = ; i < len; i++) {
            if(isupper(str[i])) {//後來發現自己這個地方寫麻煩了, T-T
                sum += str[i] - 'A' + ;
            }else {
                sum += str[i] - 'a' + ;
            }
        }
        if(vis[sum]) puts("It is a prime word.");
        else puts("It is not a prime word.");
    }
    return ;
}