UVa10948 - The primary problem

来源:互联网 发布:京东盈利模式 知乎 编辑:程序博客网 时间:2024/06/05 17:31
#include <cstdio>#include <cstring>#include <cmath>#include <vector>using namespace std;const int  N =  1000000 + 10;void init();bool vis[N];vector<int> v;int main(){    int n;#ifndef ONLINE_JUDGE    freopen("uva_in.txt", "r", stdin);#endif    init();    while (scanf("%d", &n) == 1) {        if (n == 0) break;        printf("%d:\n", n);        if (n & 1) {            if (vis[n - 2]) printf("%d+%d\n", 2, n - 2);            else printf("NO WAY!\n");            continue;        }        for (size_t i = 0; i < v.size(); i++) {            if (n < v[i]) break;            if (vis[n - v[i]]) {                printf("%d+%d\n", v[i], n - v[i]);                break;            }        }     }    return 0;}void init(){    int m = (int)sqrt(N);        memset(vis, true, sizeof(vis));    vis[0] = vis[1] = false;    for (int i = 2; i <= m; i++) {        if (vis[i]) {            for (int j = i * i; j < N; j += i)                vis[j] = false;        }    }    for (int i = 2; i < N; i++) {        if (vis[i])            v.push_back(i);    }}

原创粉丝点击