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

Быстрая проверка натурального числа на простоту - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Фоновая коррекция изображения http://www.cyberforum.ru/cpp-beginners/thread660353.html
Мне надо написать прогу, которая корректировала бы фон изображения по алгоритму:Для каждого пикселя изображения 3 (результат) : (R3,G3,B3)=(R2-R1,G2-G1,B2-B1)+Del, где Del это значение scrollbar от -255 до 255, R1,G1,B1 - значения пикселей фона, R2,G2,B2 - значение пикселей изображения, которое надо изменить. Вот код: void __fastcall TForm1::ScrollBar1Change(TObject *Sender) { int...
C++ выполните расчет стоимости, использованного интернет-трафика помогите пожалуйста, написать программу в visual c++: Выполните расчет стоимости, использованного интернет-трафика, если в ночные часы предоставляется скидка в 20%. (стоимость мегабайта и время начала скачивания вводятся пользователем, тариф определяется по времени начала). Добавлено через 1 час 16 минут как я поняла, мне нужно ввести с клавиатуры стоимость мегабайта и время суток. если это... http://www.cyberforum.ru/cpp-beginners/thread660348.html
Элементарный математический код, но почему то всегда равно 0,0000 C++
Элементарный математический код, но почему то всегда равно 0,0000. Тут я еще использую старые функции ввода-вывода, потому что так надо на лабораторную. Вот код: #include<iostream> #include<stdio.h> #include<conio.h> #include<math.h> using namespace std; int main() {
Нахождение суммы ряда с заданной точностью C++
Помогите решить задачу что то не как не могу определить с чего начать.
C++ Количество точек с целочисленными координатами внутри (не включая границ) произвольного многоугольника http://www.cyberforum.ru/cpp-beginners/thread660306.html
Есть вот такая задача. Координаты вершин подаются в порядке обхода по часовой стрелке, многоугольник может быть и невыпуклым. Решение будет основываться на исп. формулы Пика, однако есть 2 проблемы: 1) Как найти площадь такого многоугольника по координатам вершин (прошу растолковать формулу или поделиться ссылкой на источник). 2) Определение кол - ва целочисленных точек на сторонах. Спасибо.
C++ Ошибка 2094 Задали написать класс, вот собственно он: #pragma hdrstop #pragma argsused #include <iostream.h> #include <tchar.h> #include <stdio.h> class Array { int *a; int n; подробнее

Показать сообщение отдельно
AEXks
24 / 3 / 1
Регистрация: 28.10.2012
Сообщений: 35
01.11.2012, 19:26     Быстрая проверка натурального числа на простоту
ValeryS, да, я там потом решил этот вопрос, все дело было в этом операторе:
C++
1
ulong d = 1 << 35;
а надо было
C++
1
ulong d = (ulong)1 << 35;
Добавлено через 9 часов 24 минуты
Thinker, в общем написал алгоритм, может его стоит оптимизировать, потому что по скорости он проигрывает в 8 раз! и уже для 128 битных чисел нужно много времени. Даже для числа 265 252 859 812 191 058 636 308 479 999 999 (11*3 = 33 знака) нужно проверить 1,6 * 1016 делителей. И если скорость 2 * 109 / сек, то получаем 1,6 * 1016 / (2 * 109) = 8 * 106 сек или 92 дня.

Вот собственно функции:
mask[i] хранит заранее записанную маску, у которой все единицы начиная от самого левого бита и до i, или по простому - выделяем i бит слева.
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
inline __device__ void Search(ulong a,int n, int &ret)
{
    while (n)
    {
        n >>= 1;
        if (a >> n)
        {
            ret += n;
            a >>= n;
        }
    }
}
 
__device__ void LongMod(ulong *digit, ulong count, ulong modl, int bit, ulong &ret)
{
    int how_bit = BIT;
 
    ulong digit_del = digit[0];
    ulong part = digit[1];
    ulong mod = 0;
 
    mod = digit_del % modl;
    for( ;how_bit > 0; )
    {       
        int bitLeft = 0;
        Search(mod,bit,bitLeft);
        bitLeft = BIT - bitLeft - 1;
        if(how_bit >= bitLeft)
        {
            digit_del = mod << bitLeft;
            digit_del |= (part & mask[bitLeft]) >> (BIT - bitLeft);
            part <<= bitLeft;
            how_bit -= bitLeft;
        }
        else if(how_bit > 0)
        {
            digit_del = mod << how_bit;
            digit_del |= (part & mask[how_bit]) >> (BIT - how_bit);
            how_bit = 0;
        }
        mod = digit_del % modl;
    }
    ret = mod;
}
 
Текущее время: 19:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru