我尝试将十进制素数转换为二进制格式...我有两个不同的工作代码块,但我不知道如何与它们集成。
这是我的素数代码:
#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
...
答案 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; } ...
但功能可能更好。它看起来像是:
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);