def is_prime(N: int)->bool:
    """ 素数判断函数，True 是, False 否。
    Input: any integer which is greater than 1.
    Output: bool True represent integer is prime number.
    不需要用math.sqrt()函数，也不用乘方(**0.5)，改用 i*i < N.
    首先排除素数 2 和大于 2 的偶数
    don't use math.sqrt，at first skip all even number except 2

    >>> is_prime(2)
    True

    >>> is_prime(20)
    False

    >>> is_prime(-7)
    True

    """
    number = N if N > 0 else -N
    # 以下快速筛查2，3，5，7的倍数
    if number%2 == 0:
        return (number==2)  # 唯一的偶数2,-2是素数
    if number%3 == 0:
        return (number==3)  # 第一条语句已经清除了偶素数2，现在只要清除2以外的偶数
    if number%5 == 0:
        return (number==5)
    if number%7 == 0:
        return (number==7)
    # upper = int(number ** 0.5)+1  # only one operation sqrt()
    i = 11  # 起始数是奇数3，间隔为偶数2，就是判断3以后的奇数是否为素数？奇数不可能有偶因子
    while i*i <= number:  # for i in range(11, upper, 2):
        if not (number % i):  # replace number % i == 0:
            return False  # 只要找到一个因数，就不是素数
        i += 2

    return True