Algoritma Euclidean
Pelajaran 11 dari 20 dalam kursus Teka-teki Matematika di Coddy.
Method yang lebih efisien adalah algoritma Euclidean, sebuah varian yang mengganti selisih dua angka x dan y dengan sisa dari pembagian y dengan x.
Dengan menyatakan sisa ini sebagai y mod x, algoritma tersebut berulang kali mengganti (x, y) dengan (x, y mod x) hingga pasangannya menjadi (0, d), dengan d sebagai pembagi bersama terbesar.
Tantangan
SedangTulis kode python, gcd2, yang menghitung FPB berdasarkan algoritma Euclidean dan menerima vector v yang berisi dua angka.
Seberapa cepat kode ini dibandingkan dengan algoritma Euclid?
Coba sendiri
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#include "solution.h"
int main() {
int v[4096];
int vn = 0;
char line[65536];
if (!fgets(line, sizeof(line), stdin)) line[0] = '\0';
char* tok = strtok(line, " \t\r\n");
while (tok) { v[vn++] = atoi(tok); tok = strtok(NULL, " \t\r\n"); }
int r = gcd2(v, vn);
printf("%d\n", r);
return 0;
}
Semua pelajaran di Teka-teki Matematika
Latihan sendiri: Compiler C online