/*
Author : akgarhwal
Date : 30-05-2017 21:12:49
Description : Language Used -> C++14
*/
#include <bits/stdc++.h>
using namespace std;
typedef unsigned long long ll;
typedef vector<int> vi;
typedef pair<int,int> pi;
#define F first
#define S second
#define PB push_back
#define MP make_pair
#define sz(a) int((a).size())
#define all(c) (c).begin(),(c).end()
#define REP(i,a,b) for(int i = a; i < b; i++)
#define tr(c,i) for(auto i = (c).begin(); i != (c).end(); i++)
#define present(c,x) ((c).find(x) != (c).end())
#define cpresent(c,x) (find(all(c),x) != (c).end())
#define MOD 1000000007 /* 10^9+7*/
vector<bool> prime(10000001,true);
long long a[100005];
int main(){
//prime calculating using seive
prime[1]=false;
vector<ll> p;
for(ll i=2; i< 10000001; i++){
if(prime[i]){
for(int j=i+i; j< 10000001; j+=i){
prime[j] = false;
}
}
}
//push prime to vector p
for(int i=2; i<10000001 ; i++){
if(prime[i]){
p.PB(i);
}
}
//vector<bool>().swap(prime);
ll A,b;
cin>>A>>b;
int ind=0;
for(ll i=A; i<=b ; i++){
a[ind++] = i;
}
int N = sz(p);
for(int i=0; i< N ; i++){
ll P = p[i];
ll c = P-(A%P);
if(P == c){
a[0] = (a[0]/P)*(P-1LL);
}
for(ll j=c; j<= b-A; j+=P){
a[j] = (a[j]/P)*(P-1LL);
}
}
for(int i=0; i<=b-A ; i++){
if(a[i] == i+A and i+A>1){
a[i]--;
}
cout<<a[i]<<"\n";
}
return 0;
}
LyoKCUF1dGhvciAgICAgIDogYWtnYXJod2FsCglEYXRlICAgICAgICA6IDMwLTA1LTIwMTcgMjE6MTI6NDkKCURlc2NyaXB0aW9uIDogTGFuZ3VhZ2UgVXNlZCAtPiBDKysxNAoqLwoKI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZwlsbDsKdHlwZWRlZiB2ZWN0b3I8aW50Pgl2aTsKdHlwZWRlZiBwYWlyPGludCxpbnQ+CXBpOwojZGVmaW5lIEYJCWZpcnN0CiNkZWZpbmUgUwkJc2Vjb25kCiNkZWZpbmUgUEIJCXB1c2hfYmFjawojZGVmaW5lIE1QCQltYWtlX3BhaXIKI2RlZmluZSBzeihhKQkJaW50KChhKS5zaXplKCkpCiNkZWZpbmUgYWxsKGMpCQkoYykuYmVnaW4oKSwoYykuZW5kKCkKI2RlZmluZSBSRVAoaSxhLGIpCWZvcihpbnQgaSA9IGE7IGkgPCBiOyBpKyspCiNkZWZpbmUgdHIoYyxpKQkJZm9yKGF1dG8gaSA9IChjKS5iZWdpbigpOyBpICE9IChjKS5lbmQoKTsgaSsrKQojZGVmaW5lIHByZXNlbnQoYyx4KQkoKGMpLmZpbmQoeCkgIT0gKGMpLmVuZCgpKQojZGVmaW5lIGNwcmVzZW50KGMseCkJKGZpbmQoYWxsKGMpLHgpICE9IChjKS5lbmQoKSkKI2RlZmluZSBNT0QJCTEwMDAwMDAwMDcgCS8qIDEwXjkrNyovCgp2ZWN0b3I8Ym9vbD4gcHJpbWUoMTAwMDAwMDEsdHJ1ZSk7CmxvbmcgbG9uZyBhWzEwMDAwNV07CgppbnQgbWFpbigpewoKCS8vcHJpbWUgY2FsY3VsYXRpbmcgdXNpbmcgc2VpdmUKCXByaW1lWzFdPWZhbHNlOwkKCXZlY3RvcjxsbD4gcDsKCWZvcihsbCBpPTI7IGk8IDEwMDAwMDAxOyBpKyspewoJCWlmKHByaW1lW2ldKXsKCQkJZm9yKGludCBqPWkraTsgajwgMTAwMDAwMDE7IGorPWkpewoJCQkJcHJpbWVbal0gID0gZmFsc2U7CgkJCX0KCQl9CgoJfQoJLy9wdXNoIHByaW1lIHRvIHZlY3RvciBwCglmb3IoaW50IGk9MjsgaTwxMDAwMDAwMSA7IGkrKyl7CgkJaWYocHJpbWVbaV0pewoJCQlwLlBCKGkpOwoJCX0KCX0KCgkvL3ZlY3Rvcjxib29sPigpLnN3YXAocHJpbWUpOwoJbGwgQSxiOwoJY2luPj5BPj5iOwoKCWludCBpbmQ9MDsKCWZvcihsbCBpPUE7IGk8PWIgOyBpKyspewoJCWFbaW5kKytdID0gaTsKCX0KCglpbnQgTiA9IHN6KHApOwoKCWZvcihpbnQgaT0wOyBpPCBOIDsgaSsrKXsKCQkKCQlsbCBQID0gcFtpXTsKCQlsbCBjID0gUC0oQSVQKTsKCQlpZihQID09IGMpewoJCQlhWzBdID0gKGFbMF0vUCkqKFAtMUxMKTsKCQl9CgkJZm9yKGxsIGo9Yzsgajw9IGItQTsgais9UCl7CgkJCWFbal0gPSAoYVtqXS9QKSooUC0xTEwpOwkJCQkKCQl9Cgl9CgoJZm9yKGludCBpPTA7IGk8PWItQSA7IGkrKyl7CgkJaWYoYVtpXSA9PSBpK0EgYW5kIGkrQT4xKXsKCQkJYVtpXS0tOwoJCX0KCQljb3V0PDxhW2ldPDwiXG4iOwoJfQoKCXJldHVybiAwOwp9