import sys, os, io
input = io.BytesIO(os.read(0, os.fstat(0).st_size)).readline
n, k = map(int, input().split())
inf = pow(10, 12) + 1
ans = inf
for u in range(1, k):
if n % u:
continue
v = n // u
ans = min(ans, u + v * k)
print(ans)
#include <bits/stdc++.h>
using namespace std;
// #define forn(i, n) for (int i = 0; i < int(n); i++)
#define pb push_back
using ll =long long;
long long binconvert(int n)
{
long long bin = 0;
int rem, i = 1;
while (n!=0) {
rem = n % 2;
n /= 2;
bin += rem * i;
i *= 10;
}
return bin;
}
int arr[23];
void facto()
{arr[0]=1;
arr[1]=1;
arr[2]=2;
for(int i=3;i<=22;i++)
{
arr[i]=arr[i-1]+arr[i-2];
}
}
int gcd(int a,int b)
{
if(b==0)
{
return a;
}
return gcd(b,a%b);
}
int lcsub(string S,char K)
{
int currc = 0, prevc = 0, maxl;
for (int i = 0; i < S.size(); i++)
{
if (S[i] == K) {
currc += 1;
}
else {
prevc = max(prevc, currc);
currc = 0;
}
}
prevc = max(prevc, currc);
maxl = prevc;
return maxl;
}
ll sum(string s)
{
int sum1=0;
for(auto i:s)
{
sum1+=int(i-48);
}
return sum1;
}
void solve()
{
ll n,k;
cin>>n>>k;
for(int i=k-1;i>0;i--)
{
if(n%i==0)
{
cout<<i+(n/i)*k;
return;
}
}
}
int main() {
// freopen("input.txt","r",stdin);freopen("output.txt","w",stdout);
// facto();
int t=1;
//cin>>t;
while(t--)
{
solve();
}
}
378A - Playing with Dice | 248B - Chilly Willy |
1709B - Also Try Minecraft | 1418A - Buying Torches |
131C - The World is a Theatre | 1696A - NIT orz |
1178D - Prime Graph | 1711D - Rain |
534A - Exam | 1472A - Cards for Friends |
315A - Sereja and Bottles | 1697C - awoo's Favorite Problem |
165A - Supercentral Point | 1493A - Anti-knapsack |
1493B - Planet Lapituletti | 747B - Mammoth's Genome Decoding |
1591C - Minimize Distance | 1182B - Plus from Picture |
1674B - Dictionary | 1426C - Increase and Copy |
520C - DNA Alignment | 767A - Snacktower |
1365A - Matrix Game | 714B - Filya and Homework |
31A - Worms Evolution | 1691A - Beat The Odds |
433B - Kuriyama Mirai's Stones | 892A - Greed |
32A - Reconnaissance | 1236D - Alice and the Doll |