当前位置:首页 » 编程软件 » 编程同余

编程同余

发布时间: 2023-02-26 03:27:39

❶ pascal编程:同余方程

var a,b,x,y,k:longint;
function exgcd(a,b:longint; var x,y:longint):longint;
var t:longint;
begin
if b=0 then
begin x:=1;y:=0;exit(a);end;
exgcd:=exgcd(b,a mod b,x,y);
t:=x;
x:=y;
y:=t-(a div b)*y;
end;
begin
readln(a,b);
k:=exgcd(a,b,x,y);
writeln((x+b)mod b);
end.
求采纳谢谢

❷ 编程的时候随机事件是怎么实现的

一般计算机的随机数都是伪随机数,以一个真随机数(种子)作为初始条件,然后用一定的算法不停迭代产生随机数,下面是两种方法:
一般种子可以以当前的系统时间,这是完全随机的
VB的种子就是系统时间

算法1:平方取中法
1)将种子设为X0,并mod 10000得到4位数
2)将它平方得到一个8位数(不足8位时前面补0)
3)取中间的4位数可得到下一个4位随机数X1
4)重复1-3步,即可产生多个随机数
这个算法的一个主要缺点是最终它会退化成0,不能继续产生随机数。

算法2:线性同余法 LCG(Linear Congruence Generator)
1)将种子设为X0,
2)用一个算法X(n+1)=(a*X(n)+b) mod c产生X(n+1)
一般将c取得很大,可产生0到c-1之间的伪随机数
该算法的一个缺点是会出现循环。

❸ 一次同余式方程怎么解 127*x=833(mod 1012)

解:∵(127,1012)=1 ((a,b)表示a和b的最大公因数)
且(127,1012)│833 (a│b表示b被a整除)
∴127x≡833 (mod 1012) 有解,且只有1个解。
∵7*127x≡7*833≡771 (mod 1012)
==>(1012-123)x≡771 (mod 1012)
==>-123x≡771 (mod 1012)
==>123x≡-771≡241 (mod 1012)
==>8*123x≡241*8≡-96 (mod 1012)
==>(1012-28)x≡-96 (mod 1012)
==>-28x≡-96 (mod 1012)
==>28x≡96 (mod 1012)
又(28,1012)=4,且4│96
∴28x≡96 (mod 1012)与7x≡24 (mod 253)的解是一致。对于模1012只有4

个解,对于模253有1个解。
∵36*7x≡24*36≡105 (mod 253)
==>(253-1)x≡105≡-148 (mod 253)
==>-x≡-148 (mod 253)
==>x≡148 (mod 253)
∴28x≡96 (mod 1012)的4个解是 x≡148,401,654,907 (mod 1012)
经验算,x≡907 (mod 1012)是127x≡833 (mod 1012) 的解。
故同余式127x≡833 (mod 1012) 的解是x≡907 (mod 1012)。

❹ 请问一次同余式所有整数解的求法需要计算公式。谢谢。

请问一次同余式所有整数解的求法?需要计算公式。答:
首先,ax==b mod m
与不定方程ax=b+ym完全等效。
如果它们有公约数,或约去,求解后,再转化为模m的形式。如x==r mod n
转为x==r+n*i mod kn, i=0,…,k-1。
如果gcd(a,m) |b不成立,则无解。

公式一:
显然,如果有解,约去公约数,则必然可转化为gcd(a,m)=1的情况。此时很容易得到公式解。
依欧拉定理, gcd(a,m)=1,则a^Φ(m)==1 mod m.于是a*a^(Φ(m)-1)==1 mod m,即
x==a^(Φ(m)-1) mod m.
这种方法在巧妙的编程方式下,用电脑计算,不失为一种好手段。通常是将Φ(m)-1二进制化,再将多个积项取余,求积。用其他数制或其他思路计算,也行。如何方便如何算。利用洪伯阳同余表示,手算也较方便。

思路二:这种思路我是独创。用熟了很节省书写,思路也很明确。总之很便捷。
利用同余思想,在不定方程两边同时取余,再将倍数集中得到系数减小的另一不定方程。(与原式比较,得到的比较式方程,可以反映出两者的简单的系数关系。)
如此一直到可以看出特解为止。再根据比较式回代。
更多内容,请网络搜索:
wsktuuytyh 同余式

wsktuuytyh 不定方程

思路三:
ax==b mod m,gcd(a,m)=1
将模数分解为m=m1*m2*...*mn,(互质(互素)的多个因数)以它们分别为模解出结果。再逆求同余式组。逆解同余式组也不难。对于中国剩余定理,我有简化方案。
可网络搜索:wsktuuytyh 模积计数法
对m为大合数的情况,这种逆求法有一定用处。

以下谈m为质数或其幂的情况
简单的情况,可以取一个与m互素的数k, 得到kax==kb mod m
而ka mod m为一个较小或较好的值,简化为 ux==kb==v mod m
再设法使as-ut==1,再将s,t作用于两个同余式,即得解答。

当然也可以得到另外两个,或多个类似的同余式,让他们线性叠加,使左边x的系数为1即得解。

利用洪伯阳表示来描述和计算,可以使这个过程十分简洁和高效。可以利用比例的性质、带分数的性质来处理同余式。
进一步利用矩阵,可以将线性叠加描述得更简洁。
相关资料,可搜索
wsktuuytyh 洪伯阳 带分数

对于不太复杂的情况,用洪伯阳表述,不用线性叠加的手段就可以方便的求得解答。

❺ 中国剩余定理用什么程序可以编程,求程序

  1. 用什么编程软件都可以编程.只要明白了剩余定理的原理,再针对问题,选择自己擅长的编程语言就可以了.

  2. 中国剩余定理一般指孙子定理:孙子定理是中国古代求解一次同余式组(见同余)的方法。是数论中一个重要定理。又称中国余数定理。一元线性同余方程组问题最早可见于中国南北朝时期(公元5世纪)的数学着作《孙子算经》卷下第二十六题,叫做“物不知数”问题,原文如下:有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二。问物几何?即,一个整数除以三余二,除以五余三,除以七余二,求这个整数。《孙子算经》中首次提到了同余方程组问题,以及以上具体问题的解法,因此在中文数学文献中也会将中国剩余定理称为孙子定理。

  3. 三三数之剩二,五五数之剩三,七七数之剩二。问物几何?

    即,一个整数除以三余二,除以五余三,除以七余二,求这个整数。

    除以3余2和除以7余2的数可以写成21n+2。

    21n+2除以5余3,要求21n除以5余1。

    21n除以5余1,21除以5余1,要求n除以5余1(乘数之余等于余数之乘),则n最小取1。

    所以满足“除以3余2,除以5余3,除以7余2”的最小的数是21×1+2=23。

    标准解法:先从3和5、3和7、5和7的公倍数中相应地找出分别被7、5、3除均余1的较小数15、21、70 ( 注释:此步又称为求"模逆"运算,利用扩展欧几里得法并借助计算机编程可比较快速地求得.当然,对于很小的数,可以直接死算 )。即

    15÷7=2……余1,

    21÷5=4……余1,

    70÷3=23……余1.

    再用找到的三个较小数分别乘以所要求的数被7、5、3除所得的余数的积连加,

    15×2+21×3+70×2=233. (将233处用i代替,用程序可以求出)

    最后用和233除以3、5、7三个除数的最小公倍数.

    233÷105=2……余23,

    这个余数23就是合乎条件的最小数.

  4. 针对这个问题,用计算机来解决,可以用最简单的穷举法,下面上C语言代码

  5. #include<stdio.h>
    intmain()
    {
    inta=3,b=5,c=7;
    inti=7,flag=1;
    while(flag)
    {
    i++;
    if(i%7==2&&i%5==3&&i%3==2)//满足条件即输出,并设置退出循环标志
    {
    printf("所求最小值为%d ",i);
    flag=0;

    }
    }

    return0;
    }

❻ C语言编程:下面要求的题目怎么做

应用同余定理,可以比较简单地求出。其实是个老题目,说法略不同而已——

代码文本:

#include "stdio.h"

int main(int argc,char *argv[]){

int n,m,ans,i;

printf("Please enter n & m(int n,m>0)... ");

if(scanf("%d%d",&n,&m)==2 && n>0 && m>0){

ans=0;

for(i=1;i<=n;i++)

ans=(ans+m)%i;

printf(" The result is %d ",ans%n+1);

}

else

printf("Input error, exit... ");

return 0;

}

❼ C语言 编写程序利用rand()函数产生50个100以内的随机数,将其中的奇数写入当前目录下的"A.TXT"文件中

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void main()
{
int i,j;
int x[50];
int n=50;
FILE *fp;

srand((unsigned)time(NULL));
// 用当前时间来产生随机数种子,这样每次用本程序产生的随机数序列 将不同,更随机。
for(i=0;i<n;i++) {
x[i] = rand() % 100; // 产生 0-99 之间的随机数,% 是整除 取余数 运算
}

fp=fopen("A.TXT","w"); //打开文件
for(i=0;i<n;i++) {
if (x[i]%2==1) fprintf(fp,"%d\n",x[i]); // 除2余数为1的是奇数,输出它
}

fclose(fp); //关闭文件
printf("the 50 rand numbers:\n");
for(i=0;i<n;i++) {printf("%2d ",x[i]); if ( (i+1)%10==0) printf("\n");} // 屏幕输出这50个随机数
printf("\nOdd rand numbers are saved in A.TXT\n");
return 0;
}

热点内容
java返回this 发布:2025-10-20 08:28:16 浏览:746
制作脚本网站 发布:2025-10-20 08:17:34 浏览:1009
python中的init方法 发布:2025-10-20 08:17:33 浏览:715
图案密码什么意思 发布:2025-10-20 08:16:56 浏览:876
怎么清理微信视频缓存 发布:2025-10-20 08:12:37 浏览:774
c语言编译器怎么看执行过程 发布:2025-10-20 08:00:32 浏览:1124
邮箱如何填写发信服务器 发布:2025-10-20 07:45:27 浏览:349
shell脚本入门案例 发布:2025-10-20 07:44:45 浏览:227
怎么上传照片浏览上传 发布:2025-10-20 07:44:03 浏览:911
python股票数据获取 发布:2025-10-20 07:39:44 浏览:873