fun main(args: Array<String>) {
    val ab = readLine()!!.split(" ").map { it.toLong() }
    val a = ab[0]
    val b = ab[1]
    val setA = mutableSetOf<Long>()
    val setB = mutableSetOf<Long>()
    for (i in 1..a) {
        if (a % i == 0L) {
            setA.add(i)
            setA.add(a/i)
        }
        if (i * i > a) break
    }
    for (i in 1..b) {
        if (b % i == 0L) {
            setB.add(i)
            setB.add(b/i)
        }
        if (i * i > b) break
    }
    setA.retainAll(setB)
    println(setA.count { setA.count { x -> it % x == 0L && it > x } <= 1 })
}

