zoukankan      html  css  js  c++  java
  • 1294: 拆分素数

    题目描述

    老师给ellen出了一道难题,老师随机在0到10000之间抽出一个数n,让ellen计算有多少种情况满足a+b=n,并且a,b都是素数。Ellen很痛苦,你来帮帮他吧?

    输入

    输入一个0-10000之间的数

    输出

    输出满足上述要求的个数;

    样例输入

    0
    10000
    6335
    
    

    样例输出

    0
    127
    0
    

     

    #include<iostream>
    #include<vector>
    using namespace std;
    bool isprime(int n)
    {
        if (n <2)return false;
        for (int i = 2; i *i<= n; i++)
        {
            if (n%i == 0)
                return false;
        }
        return true;
    }
    int main()
    {
        int n;
        vector<int >v;
        while (cin >> n)
        {
            int cnt = 0;
            for (int i = 0; i < n; i++)
            {
                if (isprime(i))
                {
                    v.push_back(i);//素数打表
                }
            }
            /*for (vector<int >::iterator it = v.begin(); it!=v.end(); it++)
            {
            cout << *it;
            cout << " ";
            }*/
            /*vector<int>::iterator  it1 = v.begin();
            vector<int>::iterator  it2 = v.end();
            while (it1 != it2)
            {
                if (*(it1)+*(it2) == n)
                {
                     cnt++;
                     --it2;
                     ++it1;
                }
                else if (*(it1)+*it2> n)
                {
                    --it2;
                }
                else
                {
                    ++it1;
                }
            }*/
            int a = 0, b = v.size() - 1;//主要的思想是有序,然后two point,和二分查找相似。
            while (a < b)
            {
            if (v[a] + v[b] == n)
            {
            cnt++;
            b--;
            a++;
            }
            else if (v[a] + v[b]>n)
            {
            b--;
            }
            else
            {
            a++;
            }
            }
            cout << cnt << endl;
            v.clear();
        }
        //system("pause");
        return 0;
    }
    注意那个vector要v.clear()。和数组不一样,不会覆盖。
  • 相关阅读:
    springboot springcloud zuul 过滤器
    springboot springcloud eureka 熔断器
    javaweb servlet filter
    maven nexus 搭建私服(二)
    springboot springcloud zuul 网关入门
    springboot springcloud 配置中心
    springboot springcloud eureka 入门
    java rabbitmq
    java jvm调优
    maven nexus 搭建私服(一)
  • 原文地址:https://www.cnblogs.com/binanry/p/9652200.html
Copyright © 2011-2022 走看看