def is_perfect(x):
    """
    判断x是否为完美数

    :param x: 正整数
    :return: 如果x是完美数返回True，否则返回False
    """
    factor_sum = 0
    for i in range(1, x//2+1):
        # 超过一半大小后，无真因子
        if x % i == 0:
            factor_sum += i
    return factor_sum == x