#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; int powers[10]; long long lowerBound; long long upperBound; int n; int primes[10]; set compounds; int makeCompound(void) { int result = 1; for (int i=0; i= lowerBound && comp <= upperBound) { compounds.push_back(comp); } powers[expIndex]++; if (makeCompound() > upperBound) { // pokud jsem pretekl, vynuluju mocniny for (int i=0; i<=expIndex; i++) { powers[i] = 0; } } } */ void genPrimes(long long result, int primeIndex) { while (result <= upperBound) { if (result >= lowerBound) { compounds.insert(result); } if (primeIndex < n-1) { genPrimes(result, primeIndex+1); } result *= primes[primeIndex]; } } int main(void){ /* cout << makeCompound() << endl; primes[0] = 2; primes[1] = 3; primes[2] = 5; n = 3; powers[1] = 1; powers[2] = 2; cout << makeCompound() << endl; return 0; */ while (cin >> n && n > 0) { for (int i=0; i> primes[i]; powers[i] = 0; } cin >> lowerBound >> upperBound; compounds.clear(); // mame vstup genPrimes(1, 0); //sort(compounds.begin(), compounds.end()); if (compounds.empty()) { cout << "none" << endl; } else { set::iterator i = compounds.begin(); cout << *i; ++i; for ( ; i != compounds.end(); ++i) { cout << "," << *i; } cout << endl; } } return 0; }