繁体   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