十进制素数到二进制

时间:2013-03-17 20:27:46

标签: c binary decimal

我尝试将十进制素数转换为二进制格式...我有两个不同的工作代码块,但我不知道如何与它们集成。

这是我的素数代码:

#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 个答案:

答案 0 :(得分: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