![\sqrt{\frac{x_{1}^{2}+\cdots+x_{n}^{2}}{n}}\ge\frac{x_{1}+\cdots+x_{n}}{n}\ge\sqrt[n]{x_{1}\cdots x_{n}}\ge\frac{n}{\frac{1}{x_{1}}+\cdots+\frac{1}{x_{n}}}](http://www.nafarin.com/wp-content/cache/tex_ec47673d74f0caadd75c2dd5b0f1c797.png)
Test :

|
Apr
20
2010
Menghitung FPB dengan Algoritma EuclideanPosted by Zainuddin Nafarin in Algoritma, tags: Algoritma, Assembly, BASIC, C/C++, FPB, GCD, Pascal, VBAlgoritma Euclidean adalah salah satu algoritma tercepat untuk menghitung FPB (Faktor Persekutuan terBesar) / GCD (Greatest Common Divisor). FPB dari 2 angka adalah angka terbesar yang habis membagi 2 angka tersebut. Prinsip dari algoritma Euclidean ini adalah dari kenyataan bahwa FPB dari 2 angka tidak akan berubah jika angka terbesar dikurangi angka terkecil. Sebagai contoh, 22 adalah FPB dari 198 dan 110 (198 = 22 x 9; 110 = 22 x 5), 198 – 110 = 88 dan 110 tetap mempunyai FPB 22. Proses ini bisa terus di-ulang sampai salah satu dari angka tersebut adalah 0, sehingga angka yang lainnya adalah FPB dari 2 angka paling awal. Jika dilihat langkah – langkahnya sampai selesai : (198, 110) -> (110, 88) -> (88, 22) -> (22, 0) Dapat juga dituliskan secara prosedural : Berdasarkan prosedur di atas, sekarang akan dibuat implementasinya di 4 bahasa pemrograman (C/C++, Assembly, Pascal, dan BASIC). Implementasinya akan berbentuk fungsi FPB dengan input 2 bilangan bulat (integer) 32-bit, dan output juga integer. Berikut ini adalah kode-kode fungsi FPB algoritma Euclidean di 4 bahasa tersebut : C/C++int FPB(int a, int b)
{
if (a < b)
{int t = a; a = b; b = t;} // Tukar a dan b jika a < b
int r = 0;
do
{
r = a % b;
a = b;
b = r;
} while (r); // Teruskan loop hanya jika r tidak 0
return a;
}
AssemblyFPB PROC ; Fungsi : FPB(a,b) ; Input : (a,b) -> (eax, ebx) ; Output : FPB -> eax pushad ; Simpan semua register cmp eax, ebx ; Bandingkan eax dan ebx ja startloop ; Jika a > b, langsung ke startloop xchg eax, ebx ; Jika tidak, tukar isi eax dan ebx startloop: xor edx, edx ; edx = 0 div ebx ; eax / edx, sisanya akan disimpan di edx cmp edx, 0 ; Bandingkan edx dan 0 je endloop ; Jika edx = 0, hentikan loop ke endloop mov eax, ebx ; eax = ebx mov ebx, edx ; ebx = edx jmp startloop ; Mulai lagi loop endloop: popad ; Kembalikan semua register ke asal mov eax, ebx ; Simpan nilai FPB di eax ret ; Kembali ke pemanggil FPB ENDP PascalFunction FPB(a, b : Integer) : Integer;
Var t, r : Integer;
Begin
If (a < b) Then
Begin
t := a; a := b; b := t
End;
Repeat
r := a Mod b;
a := b;
b := r
Until r = 0;
FPB := a;
End;
BASICFunction FPB(ByVal a As Long, ByVal b As Long) As Long
Dim t As Long, r As Long
If a < b Then t = a: a = b: b = t
Do
r = a Mod b
a = b
b = r
Loop Until r = 0
FPB = a
End Function
Hello World, Hello Bro, Halo Dunia. Blog ini saya buat untuk mempublikasikan beberapa percobaan (riset) yang sedang/telah/akan saya pelajari di bidang Computer Science. Jika tidak saya publish disini mungkin percobaan-percobaan tersebut mungkin akan hilang dan saya lupakan, karena saya memang jarang menyimpan catatan/coretan di kampus dengan rapi. Jadi, alangkah lebih baik jika saya publikasikan dan simpan di blog ini saja, mungkin juga bisa menginspirasi pembaca-pembaca lainnya yang tertarik di topik yang sama. Khusus untuk contoh-contoh kode (source code), saya akan usahakan membuatnya minimal di 4 bahasa pemrograman (Assembly, BASIC, C/C++, dan Pascal). Saya anggap 4 bahasa ini sudah mewakili sebagian besar bahasa pemrograman yang populer saat ini. Dan ada kemungkinan bertambah lagi jika nanti saya sudah mempelajari beberapa bahasa yang lain, seperti ML, Haskell, F#. Ini adalah contoh program Hello World di 4 bahasa, coba tebak sendiri masing-masing bahasanya int main() { printf("Hello World!"); }
Sub main(): MsgBox "Hello World!": End Sub Begin Writeln('Hello World !'); End.
MODEL Small
.STACK 100h
.DATA
msg db 'Hello, world!$'
.CODE
start:
mov ah, 09h
lea dx, msg
int 21h
mov ax,4C00h
int 21h
end start
|