Algoritma Deret Bilangan Yang Habis Dibagi Bilangan Tertentu

Standard

Alhamdulillahi nahmaduhu wa nusholli wa nusallimu ‘alaa rasulihil kariim.

Setelah menuliskan tutorial mengenai deret bilangan genap ganjil, selanjutnya penulis akan memberikan tutorial yang hampir sama, yaitu bagaimana mengetahui dalam satu deret bilangan, bilangan mana saja yang habis dibagi oleh bilangan tertentu.

Misal, penulis punya sederet bilangan: 1 2 3 4 5 6 7 8 10

Habis dibagi 2: 2 4 6 8 10

Habis dibagi 3: 3 6 9

Habis di bagi 5: 5 10

Dan seterusnya.

Logika pemrogramannya adalah:

KAMUS
   i, bagi, banyak, jum : integer
   rata : real
ALGORITMA
   input ( bagi )
   jum ← 0
   banyak ← 0
   for i ← 1 to 10 do
      if (i mod bagi = 0) then
          output ( i )
          banyak ← banyak + 1
          jum ← jum + i
      endif
   endfor

   rata ← jum / banyak
   output ( "Total Jumlah bilangan ada ", jum )
   output ( "Rata-ratanya: ", rata )

Algoritma di atas memungkinkan kita untuk dapat mengetahui bilangan mana saja dalam sebuat deret yang habis dibagi oleh bilangan tertentu hanya sebatas satu kali periksa.

Sekarang bagaimana kalau kita ingin mencari tahu bahwa bilangan-bilangan dalam deret tersebut mana saja yang habis dibagi oleh bilangan-bilangan berapapun yang kita inginkan.

Misal, kita punya deret: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Yang habis dibagi 3: 3 6 9 12 15

Yang habis dibagi 3 dan 4: 12

Yang habis dibagi 2 dan 3: 6 12

Dan seterusnya.

Langsung saja penulis sajikan source code-nya.

Source Code JAVA.

import java.util.Scanner;

public class HabisDibagi2
{
public static void main( String[] args )
{
Scanner input = new Scanner( System.in );

int i,j=0,jum=0;
float rata=0;
int min,max,g;
int kali,k,l;
int m1,m2;

System.out.print( “Nilai awal: ” );
min = input.nextInt();

System.out.print( “Nilai akhir: ” );
max = input.nextInt();

while (max < min) { System.out.print( "Nilai max harus lebih besar dari nilai min.\n\nMasukkan angka akhir: " ); max = input.nextInt(); } int[] larik = new int[max-min+1]; //Isi larik k=min; do{ larik[j] = k; j++; k++; } while (k <= max); System.out.print( "Dibagi berapa kali: " ); kali = input.nextInt(); k=1; m1=0; m2=j; do{ System.out.printf( "Pembagi ke %d : ",k ); g = input.nextInt(); while (g > max)
{
System.out.printf( “Bilangan pembagi harus lebih kecil dari nilai max.\n\nPembagi ke %d : “,k );
g = input.nextInt();
}

j=0;

for (i=m1;i

Source Code C++.

#include

using namespace std;

typedef int* IntArrayPtr;

int main()
{

int i,j=0,jum=0;
float rata=0;
int min,max,g;
int kali,k,l;
int m1,m2;

cout << "Nilai awal: "; cin >> min;

cout << "Nilai akhir: "; cin >> max;

while (max < min) { cout << "Nilai max harus lebih besar dari nilai min.\n\nMasukkan angka akhir: "; cin >> max;
}

// Menggunakan Array Dinamis (Pointer)
IntArrayPtr larik;
larik = new int[max-min+1];

//Isi larik
k=min;
do{
larik[j] = k;
j++;
k++;
} while (k <= max); cout << "Dibagi berapa kali: "; cin >> kali;

k=1;
m1=0;
m2=j;

do{
cout << "Pembagi ke " << k << " : "; cin >> g;

while (g > max)
{
cout << "Bilangan pembagi harus lebih kecil dari nilai max.\n\nPembagi ke " << k << " : "; cin >> g;
}

j=0;

for (i=m1;i

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.