C/C++の宿題は拙者が斬る! 29代目
■ このスレッドは過去ログ倉庫に格納されています
0338デフォルトの名無しさん
NGNG#include <stdlib.h>
inline bool BitGet(unsigned int *x, unsigned int y)
{
return x[y/32] >> (y % 32) & 1;
}
inline void BitSet(unsigned int *x, unsigned int y)
{
x[y/32] |= 1 << (y % 32);
return;
}
int main(int argc, char **argv, char **envp)
{
unsigned int *map, i, j;
const unsigned int max = 0xFFFF;
map = (unsigned int *)calloc(max/32+(max%32 != 0), sizeof(int));
if(map == NULL) return 0;
for(i = 2; i <= max; i++){
for(j = 2; j <= max / i; j++){
BitSet(map, i*j);
}
}
for(i = 2; i <= max; i++)
if(!BitGet(map, i))
printf("%d\n", i);
free(map);
return 0;
}
■ このスレッドは過去ログ倉庫に格納されています