Pertemuan 16 Deret bilangan Matakuliah : T0016/Algoritma dan Pemrograman Tahun : 2005 Versi : 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
Implementasi menggunakan bahasa C Outline Materi Deret bilangan Implementasi menggunakan bahasa C
Deret bilangan ganjil: 1, 3, 5, 7, 9, … ganjil n+1 = ganjil n + 2 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; }
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);
Penutup Problem Deret dan bilangan dapat diselesaikan dengan cepat, jika menggunakan algoritma yang tepat