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
...
4

1 回答 1

2

您基本上可以将代码复制并粘贴到正确的位置(稍作更改或 2)。

...
如果(是素数){
   整数商 = 数;
   int binaryNumber[100],i=1,j;

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

   而(商!= 0){
      binaryNumber[i++]= 商 % 2;
      商 = 商 / 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);

测试

于 2013-03-17T20:57:52.383 回答