※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

「LCMとGCM」の編集履歴(バックアップ)一覧に戻る

LCMとGCM - (2012/11/27 (火) 20:17:06) のソース

大学への数学 マスターオブ整数論

*問い3-1
175/24と33/140でわっても自然数となる最小の既約分数。

代入される分数は既約であると仮定。

*問い3-1-2
12cm、8cm、18cmの積木を10000個同じ方向に並べて立方体を作るとき何センチの立方体が作れるか。
使わない立方体があってもよい。


 #include<stdio.h>
 int gcd ( int a, int b ){
	int c;
	while ( a != 0 ) {
		c = a; a = b%a;  b = c;
	}
	return b;
 }
 void calc(int a1,int a2, int b1,int b2){
	// a1/a2 b1/b2
	int k=gcd(a2,b1);
	int c1=a2*(b1/k);
	int c2=gcd(a1,b2);
	k=gcd(c1,c2);
	printf("%d/%d\n",c1/k,c2/k);
 }
 void calc2(int a,int b,int c,int size){
	int k=a*(b/gcd(a,b));
	int q=k*(c/gcd(k,c));
	printf("%d",q);
	int s=q/a*q/b*q/c,x;
	printf(" %d",s);
	for(x=1;x*x*x*s<size;x++);
	x--;
	printf(" %d",(x*q));
 }
 int main(){
	calc(175,24,33,140);
	calc2(12,8,18,10000);
 }







*問い3-2
長方形の頂点から入った光が長方形内で反射し何回の反射で頂点~でていくか答える問題。


 #include<stdio.h>
 int gcd ( int a, int b ){
	int c;
	while ( a != 0 ) {
		c = a; a = b%a;  b = c;
	}
	return b;
 }
 void calc(int h,int w,int dx,int dy){
	//dxとdyは既約であると仮定。
	int k=gcd(w,dx);
	int s=(w*dx/k)/dx-1;
	int len=w*dx/k;
	s+=len/w-1;
	printf("%d",s);
 }
 int main(){
	calc(42,60,21,42);
 }




*問い3-3
 #include<stdio.h>
 int gcd ( int a, int b ){
	int c;
	while ( a != 0 ) {
		c = a; a = b%a;  b = c;
	}
	return b;
 }
 void calc(int a,int b){
	int c=b/a;
	for(int d=1;d*d<c;d++){
		if(c%d==0&&gcd(d,c/d)==1){
			printf("(%d %d)",d,c/d);
		}
	}
 }
 int main(){
	calc(6,216);
 }