BELAJAR ADALAH KENIKMATAN

Bilangan Prima Menggunakan POSIX Threads dengan Bahasa C

by e Best Materi , at Saturday, September 13, 2014 , have 0 comments
Apakah anda tau apa itu bilangan Prima? dan Bagaimana suatu bilangan dikatakan bilangan prima? Bilangan prima adalah suatu bilangan hanya dapat dibagi dengan satu dan dibagi dengan dirinya sendiri. Sebagi contoh bilangan 3, 3 hanya dapat dibagi dengan satu dan tiga yang memiliki sisa bagi yaitu nol. Jika Anda mencoba untuk membagi dua maka Anda akan mendapatkan sisa satu. Oleh karena itu 3 adalah bilangan prima. Mari kita contoh lain nomor 4, 4 bukan bilangan prima karena ketika Anda membaginya dengan 2 Anda mendapatkan sisa nol. Definisi dari kami menyatakan bahwa bilangan yang hanya dapat memiliki sisa nol ketika dibagi dengan satu dan dirinya sendiri, nomor 4 jelas melanggar aturan ini ketika dibagi dengan 2, 5 di sisi lain tidak dapat dibagi dengan apa-apa tapi satu dan dirinya sendiri sehingga prima. Sudah jelaskan? :-) 



Jadi sekarang kita memahami apa itu bilangan prima yang memungkinkan mencoba dan membuat algoritma kode sederhana yang menggambarkan perilaku ini. Katakanlah seseorang datang kepada Anda di jalan dan meminta Anda untuk mendaftar setiap bilangan prima yang datang sebelum apa yang pernah bilangan (kita akan menyebutnya "batas atas") mereka meminta Anda. 

For setiap bilangan X yang datang sebelum batas atas kami 
For setiap bilangan Y yang datang sebelum X 
IF X MOD Y tidak nol tidak sama 
THEN bilangan ini harus prima 
ELSE X harus dapat dibagi oleh beberapa Y sehingga BUKAN bilangan prima 

Mod atau Modulus (%) merupakan sisa pembagian. 
Contoh 1: 
3 % (MOD) 1 = 0; 
Karena ketika Anda membagi 3 dengan 1, 1 masuk ke 3, 3 kali. Ini memberi kita sisa nol. 
Contoh 2: 
5 % 3 = 2; Karena 3 masuk ke 5 kali, jadi 2 yang tersisa sebagai sisanya. 
Divisi Modulus benar-benar akan membantu kami dengan masalah ini yaitu bilangan prima. 

POSIX Threads 
Sekarang saatnya untuk berbicara tentang POSIX Threads. POSIX Threads bekerja hampir seperti java thread dalam arti bahwa java memiliki method run yang dipanggil setelah Anda menggunakan fungsi start. Nah, POSIX thread membuat metode yang menerima fungsi sebagai salah satu parameternya, fungsi ini tidak disebut secara langsung melainkan proses pembuatannya memanggil untuk Anda. 
Bagaimana Anda membuat sebuah thread?
Mari kita lihat contoh kode di bawah ini:

CODE:

#include
#include
#include

void *runner(void *param); /* the thread */

int main(int argc, char *argv[]) {

   //Verify two args were passed in
   if(argc < 2) {
      fprintf(stderr, "USAGE: ./prime.out \n");
      exit(1);
   }

   //verify the input is greater then or equal to two
   if(atoi(argv[1]) < 2) {
      fprintf(stderr, "USAGE: %d must be >= 2\n", atoi(argv[1]));
      exit(1);
   }

   pthread_t tid;       //Thread ID
   pthread_attr_t attr; //Set of thread attributes

   printf("Prime Numbers: ");

   //Get the default attributes
   pthread_attr_init(&attr);
   //Create the thread
   pthread_create(&tid,&attr,runner,argv[1]);
   //Wait for the thread to exit
   pthread_join(tid,NULL);
   printf("\nComplete\n");
}

//The thread will begin control in this function
void *runner(void *param) {
   int i,j,upper = atoi(param);
   /* Check to see if a number is prime */
   for(i = 2; i < upper; i++) {
   int trap = 0;
      /* Check each number for divisibility */
      for(j = 2; j < i; j++) {
         int result = i % j;
         /* If any of the numbers divide cleanly
             then this number is not prime. So
             stop checking. */
         if(result == 0) {
            trap = 1;
            break;
         }
      }
      //No numbers divided cleanly so this number must be prime
      if(trap == 0) {
         printf("[%d] ", i);
      }
   }
   //Exit the thread
   pthread_exit(0);
}

OUTPUT:

Prime Numbers: [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]

Seperti yang Anda lihat kita membuat penggunaan POSIX pthread API. Kita mengatur atribut default pada threads kemudian menciptakannya. Ketika kita menciptakannya kita mem-passing kedalam Thread ID, atribut, fungsi yang kita gunakan disebut sebagai thread, dan akhirnya parameter. Dalam hal ini kita mem-di-passing pada masukan user karena itu tugas pointer jadi itu mudah. 

Dalam algoritma bilangan prima kita tidak memeriksa 1 atau bilangan sendiri untuk melihat apakah itu memilki sisa bagi nol, terutama karena kita sudah tahu begitu akan benar-benar tidak ada gunanya memeriksa, itu juga akan membuat algorithim kita lebih kompleks tanpa alasan dan itu tidak pernah menjadi hal yang baik. 

Selamat coding, harap ini membantu dalam beberapa cara. :) 
[Catatan]: Untuk Linux, kompilasi pthreads menggunakan gcc memerlukan opsi baris perintah. 
EX. : gcc-o -lpthread prime.out prime.c

source: [macboypro]
e Best Materi
Bilangan Prima Menggunakan POSIX Threads dengan Bahasa C - written by e Best Materi , published at Saturday, September 13, 2014, categorized as Komputasi Parallel . And have 0 comments
No comment Add a comment
Cancel Reply
GetID
Theme designed by Damzaky - Published by Proyek-Template
Powered by Blogger