CINTA6

  1. 运用 CRT 求解:
    x ≡ 8 (mod 11)
    x ≡ 3 (mod 19)
    解:a=8,b=3,p=11,q=19,n=pq=209
    由egcd算法可知, p p − 1 ≡ 1 ( m o d q ) , 11 p − 1 ≡ 1 ( m o d 19 ) pp^{−1} ≡ 1 (mod q),11p^{-1}≡ 1 (mod 19) pp11(modq)11p11(mod19) p − 1 = 7 p^{-1}=7 p1=7 q q − 1 ≡ 1 ( m o d p ) , 19 q − 1 ≡ 1 ( m o d 11 ) qq^{−1} ≡ 1 (mod p),19q^{-1}≡ 1 (mod 11) qq11(modp)19q11(mod11) q − 1 = 7 q^{-1}=7 q1=7,令 y ≡ a q q − 1 + b p p − 1 ( m o d n ) , y = 41 y ≡ aqq^{−1} + bpp^{−1}(mod n),y =41 yaqq1+bpp1(modn)y=41

  2. 运用 CRT 求解:
    x ≡ 1 (mod 5)
    x ≡ 2 (mod 7)
    x ≡ 3 (mod 9)
    x ≡ 4 (mod 11)
    解:对于前两个, a = 1 , b = 2 , c = 3 , d = 4 , p = 5 , q = 7 , s = 9 , t = 11 , M = 3465 , b 1 = 3465 / 5 = 693 , b 1 b 1 − 1 ≡ 1 ( m o d 5 ) , b 1 − 1 = 2 ; b 2 = 3465 / 7 = 495 , b 2 b 2 − 1 ≡ 1 ( m o d 7 ) , b 2 − 1 = 3 ; b 3 = 3465 / 9 = 385 , b 3 b 3 − 1 ≡ 1 ( m o d 9 ) , b 3 − 1 = 4 ; b 4 = 3465 / 11 = 315 , b 4 b 4 − 1 ≡ 1 ( m o d 11 ) , b 4 − 1 = 8 a=1,b=2,c=3,d=4,p=5,q=7,s=9,t=11,M=3465,b1=3465/5=693,b1b1^{-1}≡ 1 (mod 5),b1^{-1}=2;b2=3465/7=495,b2b2^{-1}≡ 1 (mod 7),b2^{-1}=3;b3=3465/9=385,b3b3^{-1}≡ 1 (mod 9),b3^{-1}=4;b4=3465/11=315,b4b4^{-1}≡ 1 (mod 11),b4^{-1}=8 a=1,b=2,c=3,d=4,p=5,q=7,s=9,t=11,M=3465b1=3465/5=693b1b111(mod5)b11=2b2=3465/7=495b2b211(mod7)b21=3b3=3465/9=385b3b311(mod9)b31=4b4=3465/11=315b4b411(mod11)b41=8。则 x = ( 1 ∗ 693 ∗ 2 + 2 ∗ 495 ∗ 3 + 3 ∗ 385 ∗ 4 + 8 ∗ 315 ∗ 4 ) m o d ( 3456 ) = 1731 。 x=(1*693*2+2* 495* 3+3* 385* 4+8* 315* 4)mod(3456)=1731。 x=(16932+24953+33854+83154)mod(3456)=1731

  3. 手动计算 200 0 2019 ( m o d 221 ) 2000^{2019} (mod 221) 20002019(mod221),不允许使用电脑或者其他电子设备。[提示:这是一
    道看上去与中国剩余定理无关的计算题。]
    由中国剩余定理, 221 = 17 ∗ 13 , 2000 = 50 ∗ 40 221=17*13,2000=50*40 221=17132000=5040,所以50↔(16,11),40↔(6,1),所以 ( [ 16 ∗ 6 m o d 17 ] , [ 11 ∗ 1 m o d 13 ] ) = ( 11 , 11 ) = 11 ([16*6mod17],[11*1mod13])=(11,11)=11 [166mod17][111mod13]=(11,11)=11,即 1 1 2019 m o d ( 221 ) 11^{2019}mod(221) 112019mod(221),由费尔马小定理: 1 1 16 ≡ 1 ( m o d 17 ) , 1 1 12 ≡ 1 ( m o d 13 ) , ( 1 1 2019 m o d 17 , 1 1 2019 m o d 13 ) = ( 1 1 3 m o d 17 , 1 1 3 m o d 13 ) = ( 5 , 5 ) = 5 。 11^{16}≡ 1 (mod 17) ,11^{12} ≡ 1 (mod 13),( 11^{2019}mod 17, 11^{2019}mod 13 ) = ( 11^{3}mod 17, 11^{3}mod 13 )=(5,5)=5。 11161(mod17)11121(mod13)(112019mod17,112019mod13)=(113mod17,113mod13)=(5,5)=5

  4. 实现一个利用 CRT 求解同余方程的程序(Python 或者 C 语言都可以)。

在这里插入代码片#include<iostream>
using namespace std;
int inverse(int m,int b)
{
	int k = 1;
	while (1)
	{
		if ((m * k + 1) % b == 0)
		{
			return ((m * k + 1) / b);
			break;
		}
		k++;
	}
}
int main()
{
	cout << "输入同余方程个数及同余方程(格式为x mod c = a)" << endl;
	int num,M=1;
	int input1[10],b[10],ib[10],ans=0; int input2[10]; string mod; char x, e;
	cin >> num;
	for (int i = 0; i < num; i++)
	{
		cin >> x >> mod >> input1[i] >> e >> input2[i];
	}
	for (int i = 0; i < num; i++)
	{
		M *= input1[i];
	}
	for (int i = 0; i < num; i++)
	{
		b[i] = M / input1[i];
	}
	for (int i = 0; i < num; i++)
	{
		ib[i] = inverse(input1[i], b[i]);
	}
	//for (int i = 0; i < num; i++)
	//{
	//	cout << ib[i] << endl;
	//}
	for (int i = 0; i < num; i++)
	{
		ans += input2[i] * b[i] * ib[i];
	}
	ans %= M;
	cout << ans;
	system("pause");
	return 0;
}

测试结果
在这里插入图片描述

在这里插入图片描述

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值