// Найти все совершенные числа, не превосходящие 2^32 – 1
#include <iostream>
#include <cmath>
using namespace std;

// Подпрограмма определяет, является ли число n простым
bool is_prime(unsigned long long  n) {  
	unsigned long long  i = 3;
	while (i < sqrt(n)) {
		if (n % i == 0) return false;
		i += 2;
	}
	return true;
}

int main() {
	unsigned long long p = 1, n = 1;
	while (p * n < (4 * n - 1) * 2 * n) { // пока числа увеличиваются
		p = 2 * n - 1; 
		if (is_prime(p)) cout << n * p << " ";
		n <<= 1;
	} 
	return 0;
}