使用C语言列出小于1000000的满足如下关系的所有正整数a:将a的最低位数字挪至最高位得到正整数b(a≠b),且a能被b整除或b能被a整除。 要求:① 请使用函数1判断正整数a的位数; ② 请使用函数2计算正整数b。
时间: 2024-05-23 19:15:16 浏览: 68
C语言求一个正整数的位数
3星 · 编辑精心推荐
好的,我明白了。下面是答案:
首先回答您的第一个问题:
使用C语言列出小于1000000的满足如下关系的所有正整数a:将a的最低位数字挪至最高位得到正整数b(a≠b),且a能被b整除或b能被a整除。
答:请见以下代码:
#include <stdio.h>
int getBitCount(int num){
int count = 0;
while(num > 0){
num /= 10;
count++;
}
return count;
}
int moveLowToHigh(int num, int bitCount){
int res = num % 10;
num /= 10;
for(int i = 1; i < bitCount; i++){
res *= 10;
}
res += num;
return res;
}
int main(){
int a, b, bitCount;
for(a = 1; a < 1000000; a++){
bitCount = getBitCount(a);
b = moveLowToHigh(a, bitCount);
if(a != b && (a % b == 0 || b % a == 0)){
printf("%d\n", a);
}
}
return 0;
}
函数1 getBitCount()用于判断正整数a的位数,函数2 moveLowToHigh()用于计算正整数b。
希望我的回答对您有帮助。如果您有其他问题,请随时问我。
阅读全文