簡體   English   中英

十進制素數轉換為二進制

[英]Decimal Prime Number to Binary

我嘗試將十進制素數轉換為二進制格式...我有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
...

您基本上可以只復制代碼並將其粘貼到正確的位置(稍有更改或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;
}
...

測試

但是功能可能更好。 它看起來像:

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);

測試

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM