Matakuliah Tahun Versi : T0016/Algoritma dan Pemrograman : 2005 : versi 2 Pertemuan 16 Deret bilangan Learning Outcomes Pada akhir pertemuan ini, diharapkan mahasiswa akan mampu : • Menjelaskan solusi deret bilangan menggunakan algoritma • Menjelaskan algoritma Permutasi dan kombinasi Outline Materi • Deret bilangan • Implementasi menggunakan bahasa C Deret Bilangan • Yang disebut dengan deret bilangan adalah sejumlah bilangan yang berurutan (sequence), bisa terbatas atau tidak terbatas jumlahnya, yang mengikuti suatu kaidah tertentu. Deret tersebut umumnya disusun secara menaik nilainya (ascending). Contoh : Deret bilangan ganjil: 1, 3, 5, 7, 9, … ganjil n+1 = ganjil n + 2 Deret bilangan • Deret bilangan ganjil antara dua bilangan tertentu void deretbilganjil(long mulai, long sampai) { if (mulai > sampai) tukar (&mulai, &sampai); if (mulai%2== 0) mulai++; // cari ganjil pertama for (;mulai<= sampai; mulai+=2) printf("%ld ", mulai); } Deret bilangan genap • Deret bilangan genap: 2, 4, 6, 8, 10, … genap n+1= genap n + 2 //Deret bilangan genap antara dua bilangan tertentu void deretbilgenap(long mulai, long sampai) { if (mulai > sampai) tukar (&mulai, &sampai); if (mulai%2== 1) mulai++; // cari genap pertama for (;mulai<= sampai; mulai+=2) printf("%ld ", mulai); } Deret prima • Deret bilangan prima: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, … Apakah p adalah prima? Bagi p dengan 2, 3, 5, … sampai dengan √p //Deret bilangan prima int isprime(unsigned long n) { int batas, pembagi, prima; if (n==2) return 1; if ((n%2)==0 || n<2) return 0; batas = ceil(sqrt(n)+0.5); pembagi = 3; prima = 1; while ((pembagi<batas) && prima) { if ((n%pembagi)==0) return 0; else pembagi+=2; } return 1; } Deret Prima void deretprima(int n) { int i; long bil; if (n> 0) { printf("2 "); i= 1; bil= 3; while (i< n) { if (isprime(bil)) { printf("%ld ", bil); i++; } bil+=2; } } } Deret Fibonacci • Deret bilangan fibonacci: 1,1, 2, 3, 5, 8, 13, 21, 34, ,,, f1= 1; f2= 1; fn= fn-1 + fn-2 //Deret bilangan fibonacci void deretfibonacci(int n) { int i, fn, fn1, fn2; for (i= 1; i<= n; i++) { if (i==1) { printf("1 "); fn1= 1; } else if(i==2) { printf("1 "); fn2= 1; } else { fn= fn1 + fn2; printf("%d ", fn); fn1= fn2; fn2= fn; } } } Deret Oblong • Deret Oblong: 2, 6, 12, 20, 30, 42 , … //Deret Oblong void deretoblong(int n) { for (int i= 1; i<= n; i++) printf("%d ", i * (i+1)); } Permutasi n! P (n, r ) = ---------------(n – r ) ! //Permutasi bilangaan unsigned long faktor(int n) { unsigned long hasil= 1; for(int i= 1; i<= n; i++) hasil *=i; return hasil; } unsigned long permutasi(int n, int r) { return faktor(n) / faktor (n-r); } Kombinasi n! K (n, r ) = ---------------(n – r ) ! r ! //Daftar kombinasi unsigned long kombinasi(int n, int r) { return faktor (n) / (faktor(r) * faktor(n-r)); } void daftarkombinasi(int n, int r) { int i, j, s[100]; int komb, m, maxval; komb = kombinasi (n, r); for (i=1; i<=r; i++) { s[i]= i; printf("%c", s[i]+64); } printf("\n"); for(i=2 ; i<=komb; i++) { m = r; maxval= n; while (s[m]==maxval) { m--; maxval--; } s[m]++; for(j=m+1; j<=r; j++) s[j]= s[j-1]+1; for(j=1;j<=r;j++) printf("%c",s[j]+64); printf("\n"); } } Penutup • Problem Deret dan bilangan dapat diselesaikan dengan cepat, jika menggunakan algoritma yang tepat
© Copyright 2024 Paperzz