view example/Miller_Rabin/spe/PrintTask.cc @ 1242:9d37fa6bc1da draft

add Miller_Rabin
author Daichi Toma <amothic@gmail.com>
date Tue, 01 Nov 2011 19:01:13 +0900
parents
children cd50c48f45e7
line wrap: on
line source

#include <stdio.h>
#include "SchedTask.h"
#include "PrintTask.h"
#include "Func.h"

typedef unsigned long long U64;

SchedDefineTask1(PrintTask, print);

	static int
print(SchedTask *smanager, void *rbuf, void *wbuf)
{
	bool print_flag = (bool)smanager->get_param(1);		//プリントするかどうか

	if (print_flag == false) {
		return 0;
	}

	U64 size = ((U64)smanager->get_param(0)) >> 1;			/* 出力する範囲 */
	bool *input = (bool*)smanager->get_input(rbuf, 0);	/* 出力する配列 */
	
	printf("%d ",(int)2);

	/* 素数の判定結果が1ならば出力する */
	for (U64 i = 1; i < size; i++) {
		if ( input[i] == true ) {
			printf("%llu ",i*2+1);
		}
	}
	printf("\n");
	return 0;
}