Skip to content

Instantly share code, notes, and snippets.

@SaltySpaghetti
Created November 14, 2024 22:03
Show Gist options
  • Save SaltySpaghetti/1403b7e96863be7c58e4c958b69a8828 to your computer and use it in GitHub Desktop.
Save SaltySpaghetti/1403b7e96863be7c58e4c958b69a8828 to your computer and use it in GitHub Desktop.
MCD in Dart w/ tests
import 'package:flutter_test/flutter_test.dart';
int mcd(int a, int b) => b == 0 ? a.abs() : mcd(b, a % b);
void main() {
group('MCD Tests', () {
test('positive numbers', () {
expect(mcd(48, 18), equals(6));
expect(mcd(56, 98), equals(14));
expect(mcd(101, 103), equals(1));
expect(mcd(54, 24), equals(6));
expect(mcd(81, 27), equals(27));
expect(mcd(100, 25), equals(25));
expect(mcd(49, 7), equals(7));
expect(mcd(77, 11), equals(11));
expect(mcd(91, 13), equals(13));
expect(mcd(121, 11), equals(11));
});
test('negative numbers', () {
expect(mcd(-48, 18), equals(6));
expect(mcd(56, -98), equals(14));
expect(mcd(-101, -103), equals(1));
expect(mcd(-54, 24), equals(6));
expect(mcd(81, -27), equals(27));
expect(mcd(-100, 25), equals(25));
expect(mcd(-49, -7), equals(7));
expect(mcd(77, -11), equals(11));
expect(mcd(-91, 13), equals(13));
expect(mcd(-121, -11), equals(11));
});
test('zero', () {
expect(mcd(0, 18), equals(18));
expect(mcd(56, 0), equals(56));
expect(mcd(0, 0), equals(0));
expect(mcd(0, 1), equals(1));
expect(mcd(1, 0), equals(1));
expect(mcd(0, -1), equals(1));
expect(mcd(-1, 0), equals(1));
expect(mcd(0, 100), equals(100));
expect(mcd(100, 0), equals(100));
expect(mcd(0, -100), equals(100));
});
test('same numbers', () {
expect(mcd(20, 20), equals(20));
expect(mcd(-20, -20), equals(20));
expect(mcd(100, 100), equals(100));
expect(mcd(-100, -100), equals(100));
expect(mcd(1, 1), equals(1));
expect(mcd(-1, -1), equals(1));
expect(mcd(50, 50), equals(50));
expect(mcd(-50, -50), equals(50));
expect(mcd(75, 75), equals(75));
expect(mcd(-75, -75), equals(75));
});
test('one', () {
expect(mcd(1, 18), equals(1));
expect(mcd(56, 1), equals(1));
expect(mcd(1, 1), equals(1));
expect(mcd(1, 100), equals(1));
expect(mcd(100, 1), equals(1));
expect(mcd(1, -18), equals(1));
expect(mcd(-56, 1), equals(1));
expect(mcd(-1, 1), equals(1));
expect(mcd(1, -100), equals(1));
expect(mcd(-100, 1), equals(1));
});
test('large numbers', () {
expect(mcd(123456, 789012), equals(12));
expect(mcd(987654321, 123456789), equals(9));
expect(mcd(1000000000, 500000000), equals(500000000));
expect(mcd(999999937, 999999937), equals(999999937));
expect(mcd(2147483647, 2147483647), equals(2147483647));
expect(mcd(1000000007, 1000000009), equals(1));
expect(mcd(4294967295, 2147483647), equals(1));
});
test('random cases', () {
expect(mcd(15, 25), equals(5));
expect(mcd(35, 10), equals(5));
expect(mcd(40, 60), equals(20));
expect(mcd(70, 105), equals(35));
expect(mcd(90, 150), equals(30));
expect(mcd(120, 180), equals(60));
expect(mcd(200, 300), equals(100));
expect(mcd(250, 375), equals(125));
expect(mcd(360, 540), equals(180));
expect(mcd(450, 675), equals(225));
});
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment