用短除法把數字轉成二進位,轉的過程中,紀錄出現 1 的個數。
二進位轉道字串陣列後,要倒著輸出,因為是相反方向。
#include <stdio.h>
#include <stdlib.h>
int main(void){
int num,counter,top,i;
char buf[100]={0};
while(scanf("%d",&num)!=EOF){
if(num==0) break;
counter=0; top=-1;
while(num>=1){
if(num%2==1) ++counter;
buf[++top]=num%2 + '0';
num/=2;
}
printf("The parity of ",counter);
for(i=top;i>=0;i--) printf("%c",buf[i]);
printf(" is %d (mod 2).\n",counter);
}
return 0;
}
沒有留言:
張貼留言