Mercurial > hg > Game > Cerium
view example/Prime/ppe/Prime.cc @ 2069:26aa08c9a1de draft default tip
cuda example fix
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 12 Feb 2017 10:04:55 +0900 |
parents | 4e6a6e620fc4 |
children |
line wrap: on
line source
#include <stdio.h> #include <math.h> #include "SchedTask.h" #include "Prime.h" #include "Func.h" SchedDefineTask1(Prime, prime); static int prime(SchedTask *smanager, void *rbuf, void *wbuf) { long start = (long)smanager->get_param(0); /* 素数判定の開始地点 */ long end = (long)smanager->get_param(1); /* 素数判定の終了地点 */ long range = end - start; /* 判定する範囲 */ /* 判定結果を収める配列を受け取る */ bool *output = (bool*)smanager->get_output(wbuf, 0); /* 初期化 */ for (int i = 0; i < range; i++){ output[i] = true; } for (long i = start, index = 0; i < end; i++, index++) { long limit = (long)sqrt((double) i); /* 割る数の最大値を求める */ for (long j = 2; j <= limit; j++) { /* 割り切れた場合、0を代入し素数じゃないという判定を下す */ if (i % j == 0) { output[index] = false; break; } } } return 0; }