求给定数目的前 n 个素数

bool is_prime (const vector<int>& primes, int num)
{
    for (const auto& prime : primes) {
        if (num % prime == 0) {
            return false;
        }
    }
    return true;
}

vector<int32_t> get_primes (const int32_t& num)
{
    vector<int32_t> primes;
    primes.push_back (2);
    int32_t vec_size = 1;
    for (int32_t i = 3; vec_size != num; i += 2) {
        if (is_prime (primes, i)) {
            primes.push_back (i);
            ++vec_size;
        }
    }
    return move (primes);
}
时间: 2024-11-05 17:58:48

求给定数目的前 n 个素数的相关文章

循环-26. 求给定序列前N项和之四

循环-26. 求给定序列前N项和之四(15) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 来源 ZOJ 本题要求编写程序,计算序列 1 - 1/4 + 1/7 - 1/10 + ... 的前N项之和. 输入格式: 输入在一行中给出一个正整数N. 输出格式: 在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后3位.题目保证计算结果不超过双精度范围. 输入样例: 10 输出样例: sum = 0.819 1 #incl

循环-28. 求给定序列前N项和之六

循环-28. 求给定序列前N项和之六(15) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 来源 ZOJ 本题要求编写程序,计算序列 2^1 + 22 + 23 + ... 的前N项之和. 输入格式: 输入在一行中给出一个不超过30的正整数N. 输出格式: 在一行中按照“sum = S”的格式输出部分和的整数值S. 输入样例: 5 输出样例: sum = 62 1 #include<stdio.h> 2 #include<ma

循环-25. 求给定序列前N项和之三

循环-25. 求给定序列前N项和之三(15) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 来源 ZOJ 本题要求编写程序,计算序列 1 + 1/3 + 1/5 + ... 的前N项之和. 输入格式: 输入在一行中给出一个正整数N. 输出格式: 在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后6位.题目保证计算结果不超过双精度范围. 输入样例: 23 输出样例: sum = 2.549541 1 #include<

循环-24. 求给定序列前N项和之二

循环-24. 求给定序列前N项和之二(15) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 来源 ZOJ 本题要求编写程序,计算序列 1! + 2! + ... 的前N项之和. 输入格式: 输入在一行中给出一个不超过12的正整数N. 输出格式: 在一行中输出整数结果. 输入样例: 5 输出样例: 153 1 #include<stdio.h> 2 #include<math.h> 3 #include<stdlib

求前n个素数(C++)

输入一个输n,输出前n个素数. 1 #include<iostream> 2 #include <math.h> 3 using namespace std; 4 5 class Sushu 6 { 7 public: 8 9 Sushu() 10 { 11 num = 2; 12 } 13 14 ~Sushu() 15 { 16 } 17 18 bool isSushu() 19 { 20 for (int i = 2; i <=sqrt(num); i++) 21 { 2

light_oj 1282 求n^k的前几位数和后几位数

light_oj 1282 求n^k的前几位数和后几位数 E - Leading and Trailing Time Limit:2000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu Submit Status Practice LightOJ 1282 Description You are given two integers: n and k, your task is to find the most signif

2/1+3/2+5/3+8/5+13/8+…求出这个数列前20项的和

★有一个分数序列2/1+3/2+5/3+8/5+13/8+-求出这个数列前20项的和. #include<stdio.h> #include<stdlib.h> int main() { int i = 0; double x = 2.0, y = 1.0, z = 0.0; double sum = 0; for (i = 1; i <= 20; i++) { sum = sum+x / y; z = x; x = x + y; y = z; } printf("

作业1:求500到1000之间有多少个素数,并打印出来

首先要知道什么是素数:所谓素数是指除了1和它本身以外,不能被任何整数整除的数. 数学里判断一个数n是否是素数,用n除以从2到这个数开方后所能取得最大整数,如果都不能整除,就说明这个数是素数. 所以这里我们用两层循环遍历 1 package com.etc; 2 public class IsSushu { 3 /** 4 * 第一题作业:求500到1000之间有多少个素数,并打印出来 5 * @param args 6 */ 7 public static void main(String[]

POJ 2528 区间染色,求染色数目,离散化

Mayor's posters Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 47905   Accepted: 13903 Description The citizens of Bytetown, AB, could not stand that the candidates in the mayoral election campaign have been placing their electoral post