Форум программистов, компьютерный форум 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 от...
C++ выполните расчет стоимости, использованного интернет-трафика помогите пожалуйста, написать программу в visual c++: Выполните расчет стоимости, использованного интернет-трафика, если в ночные часы предоставляется скидка в 20%. (стоимость мегабайта и время... http://www.cyberforum.ru/cpp-beginners/thread660348.html
Элементарный математический код, но почему то всегда равно 0,0000 C++
Элементарный математический код, но почему то всегда равно 0,0000. Тут я еще использую старые функции ввода-вывода, потому что так надо на лабораторную. Вот код: #include<iostream>...
Нахождение суммы ряда с заданной точностью C++
Помогите решить задачу что то не как не могу определить с чего начать.
C++ Количество точек с целочисленными координатами внутри (не включая границ) произвольного многоугольника http://www.cyberforum.ru/cpp-beginners/thread660306.html
Есть вот такая задача. Координаты вершин подаются в порядке обхода по часовой стрелке, многоугольник может быть и невыпуклым. Решение будет основываться на исп. формулы Пика, однако есть 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
30.10.2012, 21:38
Тут все просто: так как мы выкинули 2ки и 3ки то зачем нам их проверять? из-за этого получается две последовательности чисел, которую мы и задаем. на GPU мы имеем много нитей, которые выполняют "свой" код. По этому мы берем и выполняем параллельно проверку сразу нескольких делителей. Этот код заточен на проверку сразу массива чисел, но я тут проверял всегда одно =)

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
51
52
53
54
55
56
57
58
59
__global__ void is_simple(ulong *arr, ulong *info, int idx, ulong sqr, ulong shift, ulong count)
{
    int thIdx = blockIdx.x * blockDim.x + threadIdx.x;
    ulong x;
    
    if(thIdx % 2 == 0)
        x = 3 * thIdx + 5;
    else
        x = 3 * (thIdx - 1) + 7;
    
    ulong temp = arr[idx];
    ulong rez = 1;
    
    for(ulong i = 0; i < count; ++i)
    {       
        rez = rez xor ((temp % x) == 0);
        x += shift; 
    }
    info[thIdx] = rez;
}
 
void is_simple_arr(ulong *in_arr,ulong *out_arr, int dim_arr, float *time)
{
    dim3 blocks(60000);
    dim3 threads(256);
    int coef = 3;
    ulong *devArr,*devInfo;
    cudaEvent_t start,stop;
    
    cudaEventCreate(&start);
    cudaEventCreate(&stop); 
    
    cudaMalloc((void**)&devArr, dim_arr * sizeof(ulong));
    cudaMalloc((void**)&devInfo, blocks.x * threads.x * sizeof(ulong));
    
    device_ptr<ulong> for_reduction(devInfo);
    cudaMemcpy(devArr, in_arr, dim_arr * sizeof(ulong), cudaMemcpyHostToDevice);
    ulong red_rez;
    
    cudaEventRecord(start, 0); 
    for(int i = 0; i < dim_arr; ++i)
    {
        ulong sq = sqrt(in_arr[i]) + 1;
        if(in_arr[i] % 2 != 0 && in_arr[i] % 3 != 0)
        {
            is_simple<<< blocks, threads >>>(devArr, devInfo, i, sq, blocks.x * threads.x * coef, sq/(blocks.x * threads.x * coef) + 1);
            red_rez = reduce(for_reduction, for_reduction + blocks.x * threads.x,999,thrust::minimum<ulong>());
            out_arr[i] = red_rez;           
        }
        else
        {
            out_arr[i] = 0;
        }
    }
    
    cudaEventRecord(stop, 0);
    cudaEventSynchronize(stop);
    cudaEventElapsedTime(time,start, stop);
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru