任意一个正整数都可以用2的幂次方表示

来源:百度知道 编辑:UC知道 时间:2024/05/22 06:09:05
任意一个正整数都可以用2的幂次方表示,例如:137=2^7+2^3+2^0,同时约定次方用括号来表示,即a^b=a(b)。由此可知,137可表示:2(7)+2(3)+2(0)。进一步:7=2^2+2+2^0(2^1用2表示),3=2+2^0。所以最后137可表示为:2(2(2)+2+2(0))+2(2+2(0))+2(0)。
又如:1315=2^10+2^8+2^5+2+1
所以1315最后可表示为:2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0).
输入:正整数(n<+20000)
输出:符合约定的n的0,2表示(在表示中不能有空格)
样例:输入:137
输出:137=2(2(2)+2+2(0))+2(2+2(0))+2(0)
注意:回答时写出程序,过程,方法。
用QBASIC设计程序.

也不说用什么语言,怎么给你写程序嘛,还是你自己写吧,用递归来做这样的程序是很简单的,不用管n有多大,因为n太大以后就需要多次扫描。

对于任意的数n,可以根据其二进制形态哪些位数为1改为∑2(i)的形式,然后递归把里面括号中大于的2的数进行分解,最后没有大于的2的指数出现即可。

设计一个把n转换为字符串的函数,逐位转换时,如果遇到大于2的指数就递归调用一次本函数,装配一下字符串即可。

补充:
今天花了半小时下载和学习了QBASIC,下面是我人生的第一个QBASIC程序,调试通过,结果保证正确:

FUNCTION STR2$ (X)
LET s$ = ""
LET I = X
LET j = 0
DO WHILE I > 0
  IF I MOD 2 = 1 THEN
    IF s$ <> "" THEN s$ = "+" + s$
    IF j > 2 THEN
      s$ = "2(" + STR2$(j) + ")" + s$
    ELSE
      IF j = 1 THEN
  &n

谁能用三个2表示任意正整数?在可以使用任何数学符号的情况下,用三个2表示任意正整数。 任意一个正整数都可以表示为质因子之积 用C语言编写一个程序,实现任意长度的两个正整数的加法运算 编写一个程序,实现任意长度的两个正整数的加法运算 任意输入一个正整数,显示该数各位所对应的大写汉字. 关于VB编程,高手指点一个了:求任意个正整数的最大值和最小值 编写一个自定义函数,实现将任意一个正整数分解为其最小因子的连乘式,如:8=2*2*2 试写出5个正整数,使其中任意2个数中较大的可以被这2个数的差整除. 任意给定一个大于1的正整数n,设计一个算法求出n的所有因数. 任意职业都可以回答的问题。