← Home
package main

import (
	"bufio"
	"fmt"
	"os"
	"sort"
)

func main() {
	in := bufio.NewReader(os.Stdin)
	out := bufio.NewWriter(os.Stdout)
	defer out.Flush()

	var n int64
	var k int
	if _, err := fmt.Fscan(in, &n, &k); err != nil {
		return
	}
	a := make([]int64, 0, k)
	hasOne := false
	for i := 0; i < k; i++ {
		var x int64
		fmt.Fscan(in, &x)
		if x == 1 {
			hasOne = true
		}
		a = append(a, x)
	}
	if hasOne {
		fmt.Fprintln(out, 0)
		return
	}

	f := make([]int64, 0, len(a))
	for _, x := range a {
		if x <= n && x > 1 {
			f = append(f, x)
		}
	}
	if len(f) == 0 {
		fmt.Fprintln(out, n)
		return
	}
	sort.Slice(f, func(i, j int) bool { return f[i] < f[j] })

	var div int64 = 0
	var rec func(start int, prod int64, sign int64)
	rec = func(start int, prod int64, sign int64) {
		for i := start; i < len(f); i++ {
			x := f[i]
			if prod > n/x {
				break
			}
			p := prod * x
			div += sign * (n / p)
			rec(i+1, p, -sign)
		}
	}
	rec(0, 1, 1)

	ans := n - div
	fmt.Fprintln(out, ans)
}