using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; class Program { static void Main(string[] args) { //入力 int N = int.Parse(Console.ReadLine()); string s = Console.ReadLine(); int a = int.Parse(s.Split(' ')[0]); int b = int.Parse(s.Split(' ')[1]); int c = int.Parse(s.Split(' ')[2]); //回答となる数値 int ans = 0; int a_num = 0; //aの倍数の個数 int b_num = 0; //bの倍数の個数 int c_num = 0; //cの倍数の個数 int a_b_num = 0; int b_c_num = 0; int c_a_num = 0; int a_b_c_num = 0; //検証 a_num = N / a; b_num = N / b; c_num = N / c; a_b_num = N / LCM(a, b); b_c_num = N / LCM(b, c); c_a_num = N / LCM(c, a); a_b_c_num = N / LCM(LCM(a, b), c); ans = a_num + b_num + c_num - (a_b_num + b_c_num + c_a_num) + a_b_c_num; //出力 Console.WriteLine(ans); } //ユークリッドの互除法 public static int GCD(int a, int b) { if (a < b) { return GCD(b, a); } while (b != 0) { int amari = a % b; a = b; b = amari; } return a; } //最小公倍数を求める public static int LCM(int a, int b) { return a * b / GCD(a, b); } }