Реализации алгоритмов/Решето Сундарама: различия между версиями
Содержимое удалено Содержимое добавлено
Maxal (обсуждение | вклад) перенесено из w:Решето Сундарама |
(нет различий)
|
Версия от 06:21, 31 марта 2011
Haskell
sundaram n = 2 : [2*m+1 | m <- [1..k], m `notElem` zs]
where
zs = [i + j + 2*i*j | i <- [1..k`div`3], j <- [i..(k-i)`div`(2*i + 1)]]
k = (n-1) `div` 2
C++
void sundaram(int n){
int *a = new int [n], i, j, k;
memset(a, 0, sizeof(int) * n);
for(i = 1; 3*i+1 < n; i++){
for(j = 1; (k = i+j+2*i*j) < n && j <= i; j++){
a[k] = 1;
}
}
for(i = 1; i < n; i++){
if(a[i] == 0) cout << (2 * i + 1) << " ";
}
delete [] a;
}