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

Эффективный алгоритм поиска простых чисел на С++ - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Вывести значение логического выражения, заданного в виде строки S. Выражение определяется следующим образом («T» — True, «F» — False): <выражение> : http://www.cyberforum.ru/cpp-beginners/thread853990.html
помогите пожалуйста решить задачку на рекурсию Вывести значение логического выражения, заданного в виде строки S. Выражение определяется следующим образом («T» — True, «F» — False): <выражение> ::= T | F | And(<выражение> , <выражение>) | Or(<в ыражение> ,<выражение>)
C++ Дан символ 'C' (прописная латинская буква) и текстовый файл. Создать строковый файл, содержащий все слова из исходного файла Дан символ 'C' (прописная латинская буква) и текстовый файл. Создать строковый файл, содержащий все слова из исходного файла, начинающиеся этой буквой (как прописной, так и строчной). Знаки препинания, расположенные в начале и в конце слов, не учитывать. Если исходный файл не содержит подходящих слов, оставить результирующий файл пустым. Нужно СРОЧНО!!! Добавлено через 10 минут хотя бы... http://www.cyberforum.ru/cpp-beginners/thread853979.html
C++ Условие в условии
Здравствуйте всем. Периодически нужно менять условия и поэтому одно из двух условий делал неактивным помещая в /*----*/ if( условие 1 /*условие 2*/ ){очень много строк}
C++ Перегруженный оператор вывода
Пытаюсь написать шаблон для работы с бинарными деревьями поиска. Возникла проблема - с ходу не соображу что к чему. при попытке распечатать дерево выдает ошибку " error LNK2019: ссылка на неразрешенный внешний символ "class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl operator<<(class std::basic_ostream<char,struct std::char_traits<char> > &,class Tree<double>)"...
C++ Программа для нахождения в каждой строке матрицы G(n, m) максимальный и минимальный элементы http://www.cyberforum.ru/cpp-beginners/thread853948.html
Напишите программу для нахождения в каждой строке матрицы G(n, m) максимальный и минимальный элементы и помещения их на место первого и последнего элемента строки соответственно. Вывести на экран исходную и полученную матрицы в общепринятом виде.
C++ Составить программу, которая по номеру детали выводит на экран её название. Вот задание. Имеется пронумерованный список деталей: 1) шуруп, 2) гайка, 3) винт, 4) гвоздь,5)болт. Составить программу, которая по номеру детали выводит на экран её название. Вот какой код я смог придумать. Но почему-то он не хочет работать. Где ошибка ? #include<iostream.h> #include<conio.h> void main () { int a; clrscr(); cout <<"a="; cin>>a; switch (a); { case1: cout<<"shyryp";... подробнее

Показать сообщение отдельно
ya_noob
_
200 / 144 / 9
Регистрация: 08.10.2011
Сообщений: 432
03.05.2013, 11:14     Эффективный алгоритм поиска простых чисел на С++
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
я не хитрю
Проверяете число n порядка 1015 на простоту с помощью первых 100 чисел (хотя сами же выше пишете что надо искать делители среди первых sqrt( n ) чисел).
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
если бы кто-то в частности и вы ya_noob, разбирались в математике...
про sqrt( n ) я понимаю. как вы можете определить уровень моих познаний в математике, не спросив меня прямо об этом?
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
совершив 5-10 итерайций я уже найду составное число
Посмотрим:
Вот ваша программа из 29 поста (38 - то же самое, 40 - хитрость с "i <= 100"), немного измененная для считывания из входного потока и подсчета OPCount для каждого проверяемого числа
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
#include <cmath>
#include <iostream>
#include <cstdlib>
using namespace std;
 
bool isSimple(int num);
double OPCount = 0;
 
int main()
{
    int nCount  = 0;
    int x;
 
    while ( cin >> x ) 
    {
        isSimple( x );
        cout<<"Total count of operations : "<<OPCount<<endl;
        OPCount = 0;
    }
    system("pause");
    return 0;
}
 
bool isSimple(int num)
{
    int i;
    bool bSimple = true;
    if( num < 0 )
        num *= -1;
    OPCount += 1;
    for(i = 2; i <= 9 && bSimple; i++)
    {
        OPCount += 1;
        if( i != num )
            bSimple = num % i != 0;
    }
    for(i = 9 + 2; i <= num / 10 && bSimple; i += 2)
    {
        OPCount += 1;
        if( i != num )
            bSimple = num % i != 0;
    }
    return bSimple;
}
Вот список простых чисел до миллиона (78489 штук):
primes.zip
только архивом. там лежит список из простых чисел в txt формате

Прогон программы по всем этим числам дает результат, который опровергает вашу оценку 5-10 итераций в 90 % случаев ПОДЧИСТУЮ. что вы на это скажете?
 
Текущее время: 11:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru