예제 #1
0
파일: math.c 프로젝트: wma1729/calg
long
gcd_elem_school(long m, long n)
{
	long factors_m[64];
	int  size_m = (int)(sizeof(factors_m) / sizeof(long));
	long factors_n[64];
	int  size_n = (int)(sizeof(factors_n) / sizeof(long));
	int  i, j, jj;
	long gcd = 1;

	primefactors(m, factors_m, &size_m);
	primefactors(n, factors_n, &size_n);

	jj = 0;
	for (i = 0; i < size_m; i++) {
		for (j = jj; j < size_n; j++) {
			if (factors_m[i] == factors_n[j]) {
				gcd *= factors_n[j];
				jj = j + 1;
				break;
			}
		}
	}

	return gcd;
}
예제 #2
0
파일: math.c 프로젝트: wma1729/calg
long
lcm_middle_school(long m, long n)
{
	long factors_m[64];
	int  size_m = (int)(sizeof(factors_m) / sizeof(long));
	long factors_n[64];
	int  size_n = (int)(sizeof(factors_n) / sizeof(long));
	int  i, j, found;
	long lcm = 1;

	primefactors(m, factors_m, &size_m);
	primefactors(n, factors_n, &size_n);

	for (i = 0; i < size_m; i++) {
		found = 0;

		for (j = 0; j < size_n; j++) {
			if (factors_m[i] == factors_n[j]) {
				found = 1;
				break;
			}
		}

		lcm *= factors_m[i];
		if (found)
			factors_n[j] = 1;
	}

	for (j = 0; j < size_n; j++)
		if (factors_n[j] != 1)
			lcm *= factors_n[j];

	return lcm;
}
int main()
{
	int number;
	printf("\n Enter the number to find the factors :");
	scanf("%d",&number);
	primefactors(number);
	return 0;
}