Page 1 of 3 123 LastLast
Results 1 to 10 of 29

Thread: Mencari KPK, FPB dan faktorisasi prima Class PrimeFactor

  1. #1
    dedet's Avatar
    dedet is offline Dah Nggak Dibanned
    Join Date
    Apr 2010
    Location
    Tanah Airku Indonesia
    Posts
    580

    Default Mencari KPK, FPB dan faktorisasi prima Class PrimeFactor [AS3]

    Ide ini didapet dari om papercut, *makasih om atas idenya*
    Saia namakan class-nya PrimeFactor. Fungsi class ini sesuai dengan judulnya untuk mencari KPK, FPB dan faktorisasi prima dari sebuah bilangan, ama satu fungsi tambahan lagi, saia pakai script yang dibuat oleh om keneko yang disini untuk membuat array bilangan prima. *om pinjem scriptnya yah*

    Dalam attachment ada 2 tipe file, component dan file Actionscript.

    Untuk menggunakan component, sebelumnya pilih "Publish Settings...", lalu pilih "Flash" kemudian tekan tombol "Settings". Lalu pilih tab "Library Path" tekan tombol "Browse to SWC File" lalu pilih folde dimana file PrimeFactor.swc disimpan.

    Untuk menggunakan file Actionscript, paste folder "com" satu folder dengan file fla yang akan kita buat.

    Public Method
    ada 6 public methods pada class ini gcd, gcdPrime, lcm, lcmPrime, of, dan primes. AS3DOC-nya:
    http://irzal.com/doc/PrimeFactor/

    Untuk mencari faktorisasi prima dari sebuah bilangan gunakan method of:
    import com.irzal.PrimeFactor;

    trace("faktor prima 90:",PrimeFactor.of(90));
    //output
    faktor prima 90: 2,3,3,5
    Untuk mencari FPB gunakan method gcd:
    import.com.irzal.PrimeFactor;

    trace("FPB dari 12, 36, 90:",PrimeFactor.gcd(12, 36, 90));
    //output
    FPB dari 12, 36, 90: 6
    Untuk mencari faktorisasi prima FPB gunakan method gcdPrime:
    import com.irzal.PrimeFactor;

    trace("faktorisasi prima dari FPB 12, 36, 90:",PrimeFactor.gcdPrime(12, 36, 90));
    //output
    FPB dari 12, 36, 90: 2,3
    Untuk mencari KPK gunakan method lcm:
    import com.irzal.PrimeFactor;

    trace("KPK dari 12, 36, 90:",PrimeFactor.lcm(12, 36, 90));
    //output
    KPK dari 12, 36, 90: 180
    Untuk mencari faktorisasi prima KPK gunakan method lcmPrime:
    import com.irzal.PrimeFactor;

    trace("faktorisasi prima dari KPK 12, 36, 90:",PrimeFactor.lcmPrime(12, 36, 90,70));
    //output
    KPK dari 12, 36, 90: 2,2,3,3,5,7
    Untuk membuat array bilangan prima sebanyak 100 angka gunakan method primes:
    import com.irzal.PrimeFactor;

    var prime:Array = PrimeFactor.primes(100);
    trace(prime);
    //output
    2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61, 67,71,73,79,83,89,97,101,103,107,109,113,127,131,1 37,139,149,151,157,163,167,173,179,181,191,193,197 ,199,211,223,227,229,233,239,241,251,257,263,269,2 71,277,281,283,293,307,311,313,317,331,337,347,349 ,353,359,367,373,379,383,389,397,401,409,419,421,4 31,433,439,443,449,457,461,463,467,479,487,491,499 ,503,509,521,523,541
    jumlah bilangan prima yang bisa dibuat saia bataskan hanya sampe 1250, kapasitas Laptop cuman bisa mentog segitu . Kalo ada yg mau buat lebih silahkan rubah batasanny di line 22 pada file PrimeFactor.as, tentukan sendiri batasannya sesuai dengan kemampuan CPU masing2.


    Makasih buat om2 dibawah ini :
    - koneko
    - Denni
    - papercut

    *edited* update class
    Attached Files Attached Files
    Last edited by dedet; 12-16-2010 at 01:12 PM.
    Albert Einstein - “The important thing is not to stop questioning. Curiosity has its own reason for existing.”
    "Give a man a fish and you feed him for a day. Teach a man to fish and you feed him for a lifetime." - Chinese Proverb

    http://irzal.com

  2. #2
    papercut is offline Pahlawan BabaFlash
    Join Date
    Sep 2008
    Posts
    198

    Default

    Kereeeeeen bro, btw kalo class nya aku import di AS2 bisa gak ya?

  3. #3
    dedet's Avatar
    dedet is offline Dah Nggak Dibanned
    Join Date
    Apr 2010
    Location
    Tanah Airku Indonesia
    Posts
    580

    Default

    *edit*
    baru ngeh gak bisa, soalnya dalam method lcm dan gcd ada menggunakan method every dan forEach untuk test masing2 element dari array. Nah method ini hanya ada untuk Array di AS3
    Last edited by dedet; 12-14-2010 at 10:12 PM. Reason: gak bisa convert ke as2
    Albert Einstein - “The important thing is not to stop questioning. Curiosity has its own reason for existing.”
    "Give a man a fish and you feed him for a day. Teach a man to fish and you feed him for a lifetime." - Chinese Proverb

    http://irzal.com

  4. #4
    Denni's Avatar
    Denni is offline Pahlawan BabaFlash
    Join Date
    Oct 2009
    Location
    semarang, indonesia
    Posts
    337

    Default

    om, brarti ke-1250 bilangan prima-nya dimasukan secara manual ya?
    sabar banget kau om...

    om ane mikir gini algo laen mencari KPK,
    - kita misalkan bilangan a, b dan c.
    - terus kita pilih yang terbesar, katakanlah a
    - bilangan a kita lipatkan hingga nxa terbagi habis oleh b dan c.
    - KPK nya ya itu nxa

    biar gak terbatas prima-nya...
    oiya ada gak sih rumus untuk bilangan prima ke-n?

  5. #5
    dedet's Avatar
    dedet is offline Dah Nggak Dibanned
    Join Date
    Apr 2010
    Location
    Tanah Airku Indonesia
    Posts
    580

    Default

    Quote Originally Posted by Denni View Post
    om, brarti ke-1250 bilangan prima-nya dimasukan secara manual ya?
    sabar banget kau om...
    gak se-iseng gitu kali saia om, maksudnya 1250 (sebetulnya bisa lebih sampe 7500, lebih dari itu kena warning 15 second kalo di laptop saia), jumlah bilangan prima yang bisa dibuat batas maksimal jumlahnya. Yang nyari bilangan primanya ya tetap script lah om. coba liat lg scriptnya om.
    Quote Originally Posted by Denni
    om ane mikir gini algo laen mencari KPK,
    - kita misalkan bilangan a, b dan c.
    - terus kita pilih yang terbesar, katakanlah a
    - bilangan a kita lipatkan hingga nxa terbagi habis oleh b dan c.
    - KPK nya ya itu nxa

    biar gak terbatas prima-nya...
    masih belom kebayang saia om, bisa di share gak om . Emang kendalanya di class ini ada batasan bilangan prima
    Quote Originally Posted by Denni
    oiya ada gak sih rumus untuk bilangan prima ke-n?
    pake method primes khan bisa bikin array bilangan prima tuh kalo kita pengen tau bilagan prima yang 100 tinggal panggil aja array index yang ke 99.
    var prime:Array = PrimeFactor.primes(100);

    trace("Bilangan Prima ke 100:", prime[99]);
    //output
    Bilangan Prima ke 100: 541
    Last edited by dedet; 12-14-2010 at 10:08 PM.
    Albert Einstein - “The important thing is not to stop questioning. Curiosity has its own reason for existing.”
    "Give a man a fish and you feed him for a day. Teach a man to fish and you feed him for a lifetime." - Chinese Proverb

    http://irzal.com

  6. #6
    dedet's Avatar
    dedet is offline Dah Nggak Dibanned
    Join Date
    Apr 2010
    Location
    Tanah Airku Indonesia
    Posts
    580

    Default

    Quote Originally Posted by Denni View Post
    om ane mikir gini algo laen mencari KPK,
    - kita misalkan bilangan a, b dan c.
    - terus kita pilih yang terbesar, katakanlah a
    - bilangan a kita lipatkan hingga nxa terbagi habis oleh b dan c.
    - KPK nya ya itu nxa

    biar gak terbatas prima-nya...
    om denni cara ini gak bisa untuk bilangan yang angkanya besar, jd kalo misalnya mencari KPK 48965, 123456, 23456, 987654 kena 15 second warning dari compilernya.

    ada ide lain mungkin om?
    Albert Einstein - “The important thing is not to stop questioning. Curiosity has its own reason for existing.”
    "Give a man a fish and you feed him for a day. Teach a man to fish and you feed him for a lifetime." - Chinese Proverb

    http://irzal.com

  7. #7
    Denni's Avatar
    Denni is offline Pahlawan BabaFlash
    Join Date
    Oct 2009
    Location
    semarang, indonesia
    Posts
    337

    Default

    skrip awal:
    PHP Code:
    //scripted by denni@babaflash on AS2 as OPENSOURCE. feel free to extends this code
    trace(KPK([4896512345623456987654]));
    //KPK main methods (en:lcm), depend on maxArr() and tesKelipatan()
    function KPK(arr:Array):Number {
        
    maxElement maxArr(arr);
        
    testKPK maxElement;
        while (!
    tesKelipatan(arrtestKPK)) {
            
    testKPK += maxElement;
        }
        return 
    testKPK;
    }
    //maxArr, return maximum element in an array, it will throw error on KPK() if the input isNaN
    function maxArr(arr:Array):Number {
        
    arr arr.sort();
        
    arr.reverse();
        return 
    arr[0];
    }
    //tesKelipatan, return true if the testNum is multiplicator of each element in array
    function tesKelipatan(arr:Array, testNum:Number):Boolean {
        var 
    hasil:Boolean true;
        for (
    i=0i<arr.lengthi++) {
            
    hasil hasil && (testNum%arr[i] == 0);
        }
        return 
    hasil;

    waktu di eksekusi dengan angka kecil tak masalah, tapi ketika di eksekusi dengan
    trace(KPK([48965, 123456, 23456, 987654])), warning keluar...

    tapi ane ada ide lain, gini:
    cara2:
    PHP Code:
    //scripted by denni@babaflash on AS2 as OPENSOURCE. feel free to extends this code
    trace(KPKArray([4896512345623456987654]));
    //extending of KPK for array of number
    function KPKArray(arr:Array):Number {
        
    hasil arr[0];
        for (
    i=1i<arr.lengthi++) {
            
    hasil KPK(hasilarr[i]);
        }
        return 
    hasil;
    }
    //KPK main methods (en:lcm) just for two numbers
    function KPK(a:Numberb:Number):Number {
        
    maxElement Math.max(ab);
        
    minElement Math.min(ab);
        
    testKPK maxElement;
        while (
    testKPK%minElement != 0) {
            
    testKPK += maxElement;
        }
        return 
    testKPK;

    untuk
    trace(KPK([48965, 123456, 23456, 987654])) hasilnya 1.14657047961534e+18 berhasil di eksekusi, berhasil di eksekusi sebelum warning muncul (kira-kira 4detikan).
    tapi kalo angkanya diperbesar lagi dan diperbanyak lagi kemungkinan kalah juga

    NB:
    - maaf masih di bengkel, adanya flash 8, jadi pake AS2. kemungkinan bisa dikembangkan lagi dengan AS3 supaya lebih cepet
    - kompi ane panas om suruh ngitung KPK

  8. #8
    dedet's Avatar
    dedet is offline Dah Nggak Dibanned
    Join Date
    Apr 2010
    Location
    Tanah Airku Indonesia
    Posts
    580

    Default

    Quote Originally Posted by Denni View Post
    ...
    PHP Code:
    //scripted by denni@babaflash on AS2 as OPENSOURCE. feel free to extends this code
    trace(KPKArray([4896512345623456987654]));
    //extending of KPK for array of number
    function KPKArray(arr:Array):Number {
        
    hasil arr[0];
        for (
    i=1i<arr.lengthi++) {
            
    hasil KPK(hasilarr[i]);
        }
        return 
    hasil;
    }
    ... 
    wah mangtabs ini om den, dari dulu pengen cari cara untuk pake Euclidean algorithm untuk cari FPB bilangan lebih dari 2, berkat om denni ketemu caranya .

    saia pake cara ini om denni jadinya
    Code:
    private static function gcdCalculate(a:uint,b:uint):int
    {
        var tmp:uint;
        if(a < b){
            tmp = a;
            a = b;
            b = tmp;
        }
        while(b != 0){
            tmp = a % b;
            a = b;
            b = tmp;
        }
        return a;
    }
    /**
     * Find GCD of numbers(author <a href="http://babaflash.com/forum/member.php?u=4350" target="_blank">Deni</a> website: <a href="http://www.dealwithdenni.co.cc/" target="_blank">http://www.dealwithdenni.co.cc/</a>)
     * @author deni http://babaflash.com/forum/member.php?u=4350
     * @param    ...numbers Numbers
     * @return GCD
     */
    public static function gcd(...numbers):Number
    {
        numbers.sort(Array.NUMERIC);
        var num:uint = numbers[0];
        var i:uint = 1;
        while (i < numbers.length)
        {
            num = gcdCalculate(num, numbers[i]);
            i += 1;
        }
        return num;
    }
    /**
     * Find LCM of numbers (author <a href="http://babaflash.com/forum/member.php?u=4350" target="_blank">Deni</a> website: <a href="http://www.dealwithdenni.co.cc/" target="_blank">http://www.dealwithdenni.co.cc/</a>)
     * @author deni http://babaflash.com/forum/member.php?u=4350
     * @param    ...numbers Numbers
     * @return LCM
     */
    public static function lcm(...numbers):Number
    {
        numbers.sort(Array.NUMERIC);
        var num:uint = numbers[0];
        var i:uint = 1;
        while (i < numbers.length)
        {
            num = num * numbers[i] / gcd(num, numbers[i]);
            i += 1;
        }
        return num;
    }
    untuk angka 48965, 123456, 23456, 987654, hitungan millisecond dah dapet hasilnya.
    Nah skrg angkanya sudah tidak ada batasannya, kecuali kalo yg gede2 banget hasilnya negatif, salah dimana yach.

    ayo bapak dan ibu guru yang ada ide buat matematika, yang bisa dimasukin ke class ini, mari dimari sumbangkan elmunya jgn pelit2 .
    Albert Einstein - “The important thing is not to stop questioning. Curiosity has its own reason for existing.”
    "Give a man a fish and you feed him for a day. Teach a man to fish and you feed him for a lifetime." - Chinese Proverb

    http://irzal.com

  9. #9
    Denni's Avatar
    Denni is offline Pahlawan BabaFlash
    Join Date
    Oct 2009
    Location
    semarang, indonesia
    Posts
    337

    Default

    ngapain pake ini segala:
    Code:
    /**
     * Find GCD of numbers(author <a href="http://babaflash.com/forum/member.php?u=4350" target="_blank">Deni</a> website: <a href="http://www.dealwithdenni.co.cc/" target="_blank">http://www.dealwithdenni.co.cc/</a>)
     * @author deni http://babaflash.com/forum/member.php?u=4350
     * @param    ...numbers Numbers
     * @return GCD
     */
    ntar malah lodingnya lama lho...

    lagian tu website juga lama gak di urus koq, ditampilin segale om,om...

  10. #10
    Denni's Avatar
    Denni is offline Pahlawan BabaFlash
    Join Date
    Oct 2009
    Location
    semarang, indonesia
    Posts
    337

    Default

    kalo yang hasilnya negatif itu mungkin karena batasan UINT terlampaui...
    kompi RAM-nya terbatas om, gak kayak otak manusia...
    buatan yang maha kuasa koq...

Page 1 of 3 123 LastLast

Similar Threads

  1. Faktorisasi prima
    By papercut in forum ActionScript 1.0/2.0
    Replies: 20
    Last Post: 12-06-2010, 11:48 AM
  2. Deret bilangan fibonacci & prima
    By koneko in forum ActionScript
    Replies: 2
    Last Post: 09-19-2010, 10:00 PM
  3. Faktorisasi KPK dan FPB
    By papercut in forum ActionScript 1.0/2.0
    Replies: 4
    Last Post: 08-31-2010, 07:26 AM
  4. Bilangan Prima
    By papercut in forum ActionScript 1.0/2.0
    Replies: 1
    Last Post: 08-27-2010, 05:36 PM
  5. [ASK]Class
    By subidupapap in forum Beginner
    Replies: 3
    Last Post: 07-24-2010, 10:49 PM

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •