C言語で拡張ユークリッドアルゴニズム

このエントリーをはてなブックマークに追加
1
a*x≡1 (mod n) なるxを求めるプログラムをC言語で書きましょう。
2:2001/05/31(木) 16:10
アルゴニズム
3さん:2001/05/31(木) 16:38
アルゴニズム?
4:2001/05/31(木) 16:49
algonithm
5:2001/05/31(木) 16:53
algorithm
阿呆だ。鬱だ。子嚢
6逝って良し:2001/05/31(木) 17:10
再帰処理ですぐだろ。そんなことでスレ立てるなよ。
7sage:2001/05/31(木) 17:23
sage
8sage:2001/05/31(木) 17:24
sage
9sage:2001/05/31(木) 17:24
sage
10sage:2001/05/31(木) 17:26
□□□□□□□□□□□□□終了□□□□□□□□□□□□□□□□
11132人目の素数さん:2001/05/31(木) 17:26
sage
12132人目の素数さん:2001/05/31(木) 17:26
sage
13132人目の素数さん:2001/05/31(木) 22:32
int main(int argc, char *argv[])
ここまでヒントやったから、簡単だろ?
14132人目の素数さん:2001/06/01(金) 20:47
おれもヒント
#include<stdio.h>
15132人目の素数さん:2001/07/31(火) 01:43
>>14
助かった、ありがとう
16132人目の素数さん:2001/08/04(土) 16:01
a と b とを与えて d=GCD(a,b) と
ax+by=d の解 x,y を与えるプログラム:

#include<stdio.h>
void f(int a,int b,int*d,int*x,int*y) { int x1,y1;
if(b==0) {*x=(a>=0?1:-1); *y=0; *d=abs(a);}
else { f(b,a%b,d,&x1,&y1); *x=y1; *y=x1-(a/b)*y1; }
return;}
int main(int argc, char**argv) { int a,b,d,x,y;
if(argc!=3) exit(0);
f(a=atoi(argv[1]), b=atoi(argv[2]), &d, &x, &y);
printf("\n %d * %d + %d * %d = %d \n\n", a,x,b,y,d);
}
17_:2001/08/04(土) 20:34
>>16
コピペしてそのままコンパイルしたら動きました。
中身まだよくわかりません。
18132人目の素数さん:2001/08/05(日) 15:22
>>1
仕方ないから、俺がプログラムのスケルトンを作ってやるよ。

#include <stdio.h>

#define NAME 1
#define RESU "逝ってよし"
#define SURE_STATE "クソスレ"
#define ARASI_ID "焼き肉"

void main(void){
int a,x,n;
}
19132人目の素数さん:2001/08/05(日) 19:05
>>18
イイ!!
20132人目の素数さん:2001/08/05(日) 19:10
>>18
コピペしてそのままコンパイルしたら動きました。
なにがおこったのかよくわかりません。
21132人目の素数さん:2001/08/05(日) 20:47
>>20
ソース見てみ。
何の処理も出力されてないだろが(w
22132人目の素数さん:2001/08/05(日) 21:07
( ゚Д゚)ハァ?
23132人目の素数さん:2001/08/05(日) 21:07
しまった、誤爆だ
24132人目の素数さん:2001/08/05(日) 21:57
sine
25132人目の素数さん:2001/08/05(日) 21:57
>>16
ふむふむなるほどね。
わかってみればアタリマエだな。
26132人目の素数さん:2001/08/05(日) 22:49
というか解の存在証明がそのまま
再帰的プログラムになるわけですね。
簡単ですね。
27132人目の素数さん:2001/08/05(日) 23:01
めちゃめちゃ見にくいんですけど。。>>16
28132人目の素数さん:2001/08/06(月) 09:30
>>16
ポインタがわかりにくい。
c++の参照引数で書くとよい。
2916:2001/08/06(月) 13:20
>>28 こうですか?

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

void f(int a,int b,int&d,int&x,int&y) {
if(b==0) {x=(a>=0?1:-1); y=0; d=abs(a);}
else {int x1,y1; f(b,a%b,d,x1,y1); x=y1; y=x1-(a/b)*y1; }
return;}

int main(int argc, char**argv) { int a,b,d,x,y;
if(argc!=3) exit(0);
f(a=atoi(argv[1]), b=atoi(argv[2]), d, x, y);
printf("\n %d * %d + %d * %d = %d \n\n", a,x,b,y,d);
}
30132人目の素数さん:2001/08/12(日) 14:36
みなさんは、プログラム言語何を主に使っているんですか?
31132人目の素数さん:2001/08/12(日) 20:54
pascal というか delphi
3230:2001/08/14(火) 01:33
情けない事に両方ともかすかに名前を聞いた事がある程度です…
整数論のプログラムとか、暗号関係のプログラムを組む練習をしていくのには
どんな言語がいいとおもいますか?
33132人目の素数さん:2001/08/14(火) 01:35
アセンブラ
34132人目の素数さん:2001/08/14(火) 01:38
C++かJAVAをやっとけばいいYO!
つぶしがきくのは、C++かな?
35132人目の素数さん:2001/08/14(火) 01:52
fortranはどうなのよ
36マジレス:2001/08/14(火) 16:31
木田先生のU-BASICってどう?
37132人目の素数さん:2001/08/15(水) 00:31
個人的に Haskellか Schemeをお勧め。
多倍長整数が最初からあるし..あったよね?>> Scheme
でもつぶしは利かないよ!
C言語で数学的で短いプログラムを
紹介するスレにしましょう。
でもってage