Exemplo n.º 1
0
def main():
    equation = []

    if not os.path.exists(dir):
        os.mkdir(dir)
        os.chdir(dir)
        num = int(input("请输入一共有多少个同余方程:"))
        with open('da ta.txt', 'w') as f:
            for i in range(num):
                equation.append(input("请输入第%d个方程:" % i) + "\n")
                f.write(equation[i])
    else:
        print("目录已存在")
        os.chdir(dir)

    data = Data('./data.txt')
    if data.solution_judge():
        print("该同余式组有解")
        if data.crt_judge():
            print("该同余式组可以用中国剩余定理")
            print("解为: x=%d(mod %d)" % Crt(data).crt_compute())
        else:
            print("该同余式组不可以用中国剩余定理,以一般方法求解")
            print("解为: x=%d(mod %d)" % Nst(data).nst_compute())
    else:
        print("该同余式组无解")
        return False
def main():
    global solution
    # 创建Data类实例对象
    data = Data('src_data/data.txt')
    # 调用data对象的solution_judge方法,来判断该同余方程组是否有解

    if (data.error_flag):
        if data.solution_judge():
            print("该同余式组有解")
            # 如果有解,则分两种方式求解
            # 先调用crt_judge方法,判断是否可以用中国剩余定理求解
            if data.crt_judge():
                print("该同余式组可以用中国剩余定理")
                sol = "解为: x=%d(mod %d)" % Crt(data).crt_compute()
                print(sol)
                # 将答案写入文件
                with open("src_data/data.txt", "a") as f:
                    f.write("\n" + sol)
                return sol
            # 如果crt_judge方法返回0,则调用nst方法,用一般求解方式进行求解
            else:
                print("该同余式组不可以用中国剩余定理,以一般方法求解")
                sol = "解为: x=%d(mod %d)" % Nst(data).nst_compute()
                print(sol)

                # 将答案写入文件
                with open("src_data/data.txt", "a") as f:
                    f.write("\n" + sol)
                return sol
        else:
            solution = "该同余式组无解"
            print("该同余式组无解")
            return solution
    else:
        return data.solution