2013-03-17 111 views
0

我嘗試將十進制素數轉換爲二進制格式...我有2個不同的工作代碼塊,但我不怎麼與它們集成。十進制素數到二進制

這裏是我的素數代碼:

#include <stdio.h> 
#include <math.h> 

int main(){ 
    int num, sr, num2; 
    int isPrime = 1; 
    printf("Prime\t | Binary\n"); 
    printf("============================\n"); 
    for(num=2; num<=100; num++){ 
     sr = (int) sqrt(num); 
     for(num2=2; num2 <= sr; num2++){ 
      //num2 <== sr to stop the innner loop 
      if(num%num2 == 0){ 
       isPrime = 0; 
       break; 
      } 
     } 
     if(isPrime){ 
      printf("%d\t |\n", num); 
      isPrime = 1; 
     }else{ 
      isPrime = 1; 
     } 
    } 
    return 0; 
} 

這是十進制到二進制:

int decimalNumber,remainder,quotient; 
int binaryNumber[100],i=1,j; 
while(quotient!=0){ 
    binaryNumber[i++]= quotient % 2; 
    quotient = quotient/2; 
} 

for(j = i -1 ;j> 0;j--) 
    printf("%d",binaryNumber[j]); 

我想要什麼:

Prime  | Binary 
===================== 
2   | 10 
3   | 11 
... 
+1

你有沒有考慮過有一個'void print_number_in_binary(int n);'例程 – 2013-03-17 20:30:16

+0

那麼我們來清楚一點,你需要代碼片段,並且你想合併它們嗎? – antonijn 2013-03-17 20:30:26

+0

@Antonijn yep .. – android93 2013-03-17 20:30:56

回答

3

可以基本上只是複製和粘貼代碼放在正確的位置(稍做改動或2)。

... 
if(isPrime){ 
    int quotient = num; 
    int binaryNumber[100],i=1,j; 

    printf("%d\t |", num); 

    while(quotient!=0){ 
     binaryNumber[i++]= quotient % 2; 
     quotient = quotient/2; 
    } 

    for(j = i -1 ;j> 0;j--) 
     printf("%d",binaryNumber[j]); 

    printf("\n"); 
    isPrime = 1; 
} 
... 

Test

但是函數可能更好。它看起來是這樣的:

void printBinary(int decimalNumber) 
{ 
    int quotient = decimalNumber; 
    int binaryNumber[100],i=1,j; 
    while(quotient!=0){ 
     binaryNumber[i++]= quotient % 2; 
     quotient = quotient/2; 
    } 

    for(j = i -1 ;j> 0;j--) 
     printf("%d",binaryNumber[j]); 
} 

,你會跟

printBinary(num); 

Test調用它。