Форум программистов, компьютерный форум CyberForum.ru

итое простое число - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ случайная фраза http://www.cyberforum.ru/cpp-beginners/thread854262.html
нужна программа, которая будет считывать текст из файла и выводить одно случайное слово. если не трудно помогите пожалуйста
C++ Простые числа и количество нулей Задание: Нужно ввести число N с клавиатуры. Вывести на экран простые числа до N. И среди них найти число с максимальным числом нулей. При вводе 100 выводит 907 как и должна, а при вводе 10000 выводит 9907, а должна 9007. в Чем ошибка? Помогите исправить. #include <iostream> #include <conio.h> #include <math.h> using namespace std; void main() { http://www.cyberforum.ru/cpp-beginners/thread854248.html
C++ Переведите программу в язык С++
У меня такая же задача. Только надо на С++. В спойлер дано задание. Кому не трудно. На с++ переделайте с паскаля. Составьте программу, которая для целого числа K (от 1 до 99 ), введенного вами, напечатает фразу “Мне к лет”, где к – введенное число, при этом в нужных случаях слово “лет” заменяя на слово “год” или “года” ) Например: при к=70 “Мне 70 лет”, при к=15 “ Мне 15 лет”, при к=23 “ Мне 23...
ЧТо не так в коде? C++
#include <iostream> #include <stdio.h> #include <conio.h> #include <string.h> #include <vector> using namespace std; vector< vector<char> > name_files;
C++ Даны вещественные числа х, у. Вычислить http://www.cyberforum.ru/cpp-beginners/thread854214.html
Даны вещественные числа х, у. Вычислить http://s018.***********/i509/1305/86/5d4a244b830c.png Помогите решить в С++.
C++ Поиск элемента по столбцам матрицы Здравствуйте, помогите пожалуйста с программой. Произвести поиск элемента (последовательности элементов) по столбцам матрицы последовательным методом. Заранее благодарен. #include "stdafx.h" #include <iostream> #include <time.h> using namespace std; int _tmain(int argc, _TCHAR* argv) подробнее

Показать сообщение отдельно
Ternsip
 Аватар для Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
07.05.2013, 18:26  [ТС]     итое простое число
Блочное решето с модификациями прошло.
Вот код, кстати его легко использовать для генерации простых чисел, работает, конечно, ещё быстрее, чем если бы каждое по-отдельности проверять.
Тему можно считать закрытой.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <iostream>
#include <vector>
#include <algorithm>
#include <set>
 
using namespace std;
 
const int sqrt_maxn = 100000;
const int S = 10000;
bool nprime[sqrt_maxn], bl[S];
int primes[sqrt_maxn], cnt;
 
int main() {                
    freopen("input.txt", "rt", stdin);
    freopen("output.txt", "wt", stdout);
    int idx;
    cin >> idx;
    int n = 179424673; // 10^7 prime number 
    int nsqrt = (int) sqrt ((double)n);
    for (int i = 2; i <= nsqrt; ++i) {
        if (!nprime[i]) {
            primes[cnt++] = i;
            if (i * 1ll * i <= nsqrt)
                for (int j = i * i; j <= nsqrt; j += i)
                    nprime[j] = true;
        }
    }
    int result = 0;
    for (int k = 0, maxk = n/S; k <= maxk; ++k) {
        memset (bl, 0, sizeof bl);
        int start = k * S;
        for (int i = 0; i < cnt; ++i) {
            for (int j = max((start + primes[i] - 1) / primes[i], 2) * primes[i] - start; j < S; j += primes[i]) {
                bl[j] = true;
            }
        }
        if (k == 0)
            bl[0] = bl[1] = true;
        for (int i = 0; i < S && start + i <= n; ++i) {
            if (!bl[i]) {
                ++result;
                if (result == idx) {
                    cout << i + k * S;
                    return 0;
                }
            }
        }
    }
    return 0;
}
 
Текущее время: 14:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru