download

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