0

10 進数の素数をバイナリ形式に変換しようとしています... 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;
}

そして、これは 10 進数から 2 進数への変換です。

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

...
if(isPrime){
   int 商 = 数値;
   int binaryNumber[100],i=1,j;

   printf("%d\t |", 数値);

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

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

   printf("\n");
   プライム = 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 に答える