當前位置:首頁 » 編程軟體 » 編程同餘

編程同餘

發布時間: 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