Как найти сумму степеней двойки

Visualization of powers of two from 1 to 1024 (20 to 210)

A power of two is a number of the form 2n where n is an integer, that is, the result of exponentiation with number two as the base and integer n as the exponent.

In a context where only integers are considered, n is restricted to non-negative values,[1] so there are 1, 2, and 2 multiplied by itself a certain number of times.[2]

The first ten powers of 2 for non-negative values of n are:

1, 2, 4, 8, 16, 32, 64, 128, 256, 512, … (sequence A000079 in the OEIS)

Base of the binary numeral system[edit]

Because two is the base of the binary numeral system, powers of two are common in computer science. Written in binary, a power of two always has the form 100…000 or 0.00…001, just like a power of 10 in the decimal system.

Computer science[edit]

Two to the exponent of n, written as 2n, is the number of ways the bits in a binary word of length n can be arranged. A word, interpreted as an unsigned integer, can represent values from 0 (000…0002) to 2n − 1 (111…1112) inclusively. Corresponding signed integer values can be positive, negative and zero; see signed number representations. Either way, one less than a power of two is often the upper bound of an integer in binary computers. As a consequence, numbers of this form show up frequently in computer software. As an example, a video game running on an 8-bit system might limit the score or the number of items the player can hold to 255—the result of using a byte, which is 8 bits long, to store the number, giving a maximum value of 28 − 1 = 255. For example, in the original Legend of Zelda the main character was limited to carrying 255 rupees (the currency of the game) at any given time, and the video game Pac-Man famously has a kill screen at level 256.

Powers of two are often used to measure computer memory. A byte is now considered eight bits (an octet), resulting in the possibility of 256 values (28). (The term byte once meant (and in some cases, still means) a collection of bits, typically of 5 to 32 bits, rather than only an 8-bit unit.) The prefix kilo, in conjunction with byte, may be, and has traditionally been, used, to mean 1,024 (210). However, in general, the term kilo has been used in the International System of Units to mean 1,000 (103). Binary prefixes have been standardized, such as kibi (Ki) meaning 1,024. Nearly all processor registers have sizes that are powers of two, 32 or 64 being very common.

Powers of two occur in a range of other places as well. For many disk drives, at least one of the sector size, number of sectors per track, and number of tracks per surface is a power of two. The logical block size is almost always a power of two.

Numbers that are not powers of two occur in a number of situations, such as video resolutions, but they are often the sum or product of only two or three powers of two, or powers of two minus one. For example, 640 = 32 × 20, and 480 = 32 × 15. Put another way, they have fairly regular bit patterns.

Mersenne and Fermat primes[edit]

A prime number that is one less than a power of two is called a Mersenne prime. For example, the prime number 31 is a Mersenne prime because it is 1 less than 32 (25). Similarly, a prime number (like 257) that is one more than a positive power of two is called a Fermat prime—the exponent itself is a power of two. A fraction that has a power of two as its denominator is called a dyadic rational. The numbers that can be represented as sums of consecutive positive integers are called polite numbers; they are exactly the numbers that are not powers of two.

Euclid’s Elements, Book IX[edit]

The geometric progression 1, 2, 4, 8, 16, 32, … (or, in the binary numeral system, 1, 10, 100, 1000, 10000, 100000, … ) is important in number theory. Book IX, Proposition 36 of Elements proves that if the sum of the first n terms of this progression is a prime number (and thus is a Mersenne prime as mentioned above), then this sum times the nth term is a perfect number. For example, the sum of the first 5 terms of the series 1 + 2 + 4 + 8 + 16 = 31, which is a prime number. The sum 31 multiplied by 16 (the 5th term in the series) equals 496, which is a perfect number.

Book IX, Proposition 35, proves that in a geometric series if the first term is subtracted from the second and last term in the sequence, then as the excess of the second is to the first—so is the excess of the last to all those before it. (This is a restatement of our formula for geometric series from above.) Applying this to the geometric progression 31, 62, 124, 248, 496 (which results from 1, 2, 4, 8, 16 by multiplying all terms by 31), we see that 62 minus 31 is to 31 as 496 minus 31 is to the sum of 31, 62, 124, 248. Therefore, the numbers 1, 2, 4, 8, 16, 31, 62, 124 and 248 add up to 496 and further these are all the numbers that divide 496. For suppose that p divides 496 and it is not amongst these numbers. Assume p q is equal to 16 × 31, or 31 is to q as p is to 16. Now p cannot divide 16 or it would be amongst the numbers 1, 2, 4, 8 or 16.
Therefore, 31 cannot divide q. And since 31 does not divide q and q measures 496, the fundamental theorem of arithmetic implies that q must divide 16 and be amongst the numbers 1, 2, 4, 8 or 16. Let q be 4, then p must be 124, which is impossible since by hypothesis p is not amongst the numbers 1, 2, 4, 8, 16, 31, 62, 124 or 248.

Table of values[edit]


(sequence A000079 in the OEIS)

n 2n n 2n n 2n n 2n
0 1 16 65,536 32 4,294,967,296 48 281,474,976,710,656
1 2 17 131,072 33 8,589,934,592 49 562,949,953,421,312
2 4 18 262,144 34 17,179,869,184 50 1,125,899,906,842,624
3 8 19 524,288 35 34,359,738,368 51 2,251,799,813,685,248
4 16 20 1,048,576 36 68,719,476,736 52 4,503,599,627,370,496
5 32 21 2,097,152 37 137,438,953,472 53 9,007,199,254,740,992
6 64 22 4,194,304 38 274,877,906,944 54 18,014,398,509,481,984
7 128 23 8,388,608 39 549,755,813,888 55 36,028,797,018,963,968
8 256 24 16,777,216 40 1,099,511,627,776 56 72,057,594,037,927,936
9 512 25 33,554,432 41 2,199,023,255,552 57 144,115,188,075,855,872
10 1,024 26 67,108,864 42 4,398,046,511,104 58 288,230,376,151,711,744
11 2,048 27 134,217,728 43 8,796,093,022,208 59 576,460,752,303,423,488
12 4,096 28 268,435,456 44 17,592,186,044,416 60 1,152,921,504,606,846,976
13 8,192 29 536,870,912 45 35,184,372,088,832 61 2,305,843,009,213,693,952
14 16,384 30 1,073,741,824 46 70,368,744,177,664 62 4,611,686,018,427,387,904
15 32,768 31 2,147,483,648 47 140,737,488,355,328 63 9,223,372,036,854,775,808

Last digits[edit]

Starting with 2 the last digit is periodic with period 4, with the cycle 2–4–8–6–, and starting with 4 the last two digits are periodic with period 20. These patterns are generally true of any power, with respect to any base. The pattern continues where each pattern has starting point 2k, and the period is the multiplicative order of 2 modulo 5k, which is φ(5k) = 4 × 5k−1 (see Multiplicative group of integers modulo n).[citation needed]

Powers of 1024[edit]

(sequence A140300 in the OEIS)

The first few powers of 210 are slightly larger than those same powers of 1000 (103). The powers of 210 values that have less than 25% deviation are listed below:

20 = 1 = 10000 (0% deviation)
210 = 1 024 ≈ 10001 (2.4% deviation)
220 = 1 048 576 ≈ 10002 (4.9% deviation)
230 = 1 073 741 824 ≈ 10003 (7.4% deviation)
240 = 1 099 511 627 776 ≈ 10004 (10.0% deviation)
250 = 1 125 899 906 842 624 ≈ 10005 (12.6% deviation)
260 = 1 152 921 504 606 846 976 ≈ 10006 (15.3% deviation)
270 = 1 180 591 620 717 411 303 424 ≈ 10007 (18.1% deviation)
280 = 1 208 925 819 614 629 174 706 176 ≈ 10008 (20.9% deviation)
290 = 1 237 940 039 285 380 274 899 124 224 ≈ 10009 (23.8% deviation)

It takes approximately 17 powers of 1024 to reach 50% deviation and approximately 29 powers of 1024 to reach 100% deviation of the same powers of 1000.[citation needed]

Powers of two whose exponents are powers of two[edit]

Because data (specifically integers) and the addresses of data are stored using the same hardware, and the data is stored in one or more octets (23), double exponentials of two are common. The first 24 of them are:

n 2n 22n (sequence A001146 in the OEIS)
0 1 2
1 2 4
2 4 16
3 8 256
4 16 65,536
5 32 4,294,967,296
6 64 18,​446,​744,​073,​709,​551,​616 (20 digits)
7 128 340,​282,​366,​920,​938,​463,​463,​374,​607,​431,​768,​211,​456 (39 digits)
8 256 115,​792,​089,​237,​316,​195,​423,​570,​985,​008,​687,​907,​853,​269,​984,​665,​640,​564,​039,​457,​584,​007,​913,​129,​639,​936 (78 digits)
9 512 13,​407,​807,​929,​942,​597,​099,​574,​02…1,​946,​569,​946,​433,​649,​006,​084,​096 (155 digits)
10 1,024 179,​769,​313,​486,​231,​590,​772,​930,​5…6,​304,​835,​356,​329,​624,​224,​137,​216 (309 digits)
11 2,048 32,​317,​006,​071,​311,​007,​300,​714,​87…8,​193,​555,​853,​611,​059,​596,​230,​656 (617 digits)
12 4,096 1,​044,​388,​881,​413,​152,​506,​691,​752,​…0,​243,​804,​708,​340,​403,​154,​190,​336 (1,234 digits)
13 8,192 1,​090,​748,​135,​619,​415,​929,​462,​984,​…1,​997,​186,​505,​665,​475,​715,​792,​896 (2,467 digits)
14 16,384 1,​189,​731,​495,​357,​231,​765,​085,​759,​…2,​460,​447,​027,​290,​669,​964,​066,​816 (4,933 digits)
15 32,768 1,​415,​461,​031,​044,​954,​789,​001,​553,​…7,​541,​122,​668,​104,​633,​712,​377,​856 (9,865 digits)
16 65,536 2,​003,​529,​930,​406,​846,​464,​979,​072,​…2,​339,​445,​587,​895,​905,​719,​156,​736 (19,729 digits)
17 131,072 4,​014,​132,​182,​036,​063,​039,​166,​060,​…1,​850,​665,​812,​318,​570,​934,​173,​696 (39,457 digits)
18 262,144 16,​113,​257,​174,​857,​604,​736,​195,​72…0,​753,​862,​605,​349,​934,​298,​300,​416 (78,914 digits)
19 524,288 259,​637,​056,​783,​100,​077,​612,​659,​6…1,​369,​814,​364,​528,​226,​185,​773,​056 (157,827 digits)

Also see tetration and lower hyperoperations.

Last digits for powers of two whose exponents are powers of two[edit]

All of these numbers end in 6. Starting with 16 the last two digits are periodic with period 4, with the cycle 16–56–36–96–, and starting with 16 the last three digits are periodic with period 20. These patterns are generally true of any power, with respect to any base. The pattern continues where each pattern has starting point 2k, and the period is the multiplicative order of 2 modulo 5k, which is φ(5k) = 4 × 5k−1 (see Multiplicative group of integers modulo n).[citation needed]

Facts about powers of two whose exponents are powers of two[edit]

In a connection with nimbers, these numbers are often called Fermat 2-powers.

The numbers 2^{2^{n}} form an irrationality sequence: for every sequence x_{i} of positive integers, the series

sum_{i=0}^{infty} frac{1}{2^{2^i} x_i}  = frac{1}{2x_0}+frac{1}{4x_1}+frac{1}{16x_2}+cdots

converges to an irrational number. Despite the rapid growth of this sequence, it is the slowest-growing irrationality sequence known.[3]

Powers of two whose exponents are powers of two in computer science[edit]

Several of these numbers represent the number of values representable using common computer data types. For example, a 32-bit word consisting of 4 bytes can represent 232 distinct values, which can either be regarded as mere bit-patterns, or are more commonly interpreted as the unsigned numbers from 0 to 232 − 1, or as the range of signed numbers between −231 and 231 − 1. For more about representing signed numbers see two’s complement.

Selected powers of two[edit]

22 = 4
The number that is the square of two. Also the first power of two tetration of two.
28 = 256
The number of values represented by the 8 bits in a byte, more specifically termed as an octet. (The term byte is often defined as a collection of bits rather than the strict definition of an 8-bit quantity, as demonstrated by the term kilobyte.)
210 = 1,024
The binary approximation of the kilo-, or 1,000 multiplier, which causes a change of prefix. For example: 1,024 bytes = 1 kilobyte (or kibibyte).
212 = 4,096
The hardware page size of an Intel x86-compatible processor.
215 = 32,768
The number of non-negative values for a signed 16-bit integer.
216 = 65,536
The number of distinct values representable in a single word on a 16-bit processor, such as the original x86 processors.[4]
The maximum range of a short integer variable in the C#, Java, and SQL programming languages. The maximum range of a Word or Smallint variable in the Pascal programming language.
The number of binary relations on a 4-element set.
220 = 1,048,576
The binary approximation of the mega-, or 1,000,000 multiplier, which causes a change of prefix. For example: 1,048,576 bytes = 1 megabyte (or mebibyte).
224 = 16,777,216
The number of unique colors that can be displayed in truecolor, which is used by common computer monitors.
This number is the result of using the three-channel RGB system, with 8 bits for each channel, or 24 bits in total.
The size of the largest unsigned integer or address in computers with 24-bit registers or data buses.
229 = 536,870,912
The largest power of two with distinct digits in base ten.[5]
230 = 1,073,741,824
The binary approximation of the giga-, or 1,000,000,000 multiplier, which causes a change of prefix. For example, 1,073,741,824 bytes = 1 gigabyte (or gibibyte).
231 = 2,147,483,648
The number of non-negative values for a signed 32-bit integer. Since Unix time is measured in seconds since January 1, 1970, it will run out at 2,147,483,647 seconds or 03:14:07 UTC on Tuesday, 19 January 2038 on 32-bit computers running Unix, a problem known as the year 2038 problem.
232 = 4,294,967,296
The number of distinct values representable in a single word on a 32-bit processor.[6] Or, the number of values representable in a doubleword on a 16-bit processor, such as the original x86 processors.[4]
The range of an int variable in the Java, C#, and SQL programming languages.
The range of a Cardinal or Integer variable in the Pascal programming language.
The minimum range of a long integer variable in the C and C++ programming languages.
The total number of IP addresses under IPv4. Although this is a seemingly large number, the number of available 32-bit IPv4 addresses has been exhausted (but not for IPv6 addresses).
The number of binary operations with domain equal to any 4-element set, such as GF(4).
240 = 1,099,511,627,776
The binary approximation of the tera-, or 1,000,000,000,000 multiplier, which causes a change of prefix. For example, 1,099,511,627,776 bytes = 1 terabyte or tebibyte.
250 = 1,125,899,906,842,624
The binary approximation of the peta-, or 1,000,000,000,000,000 multiplier. 1,125,899,906,842,624 bytes = 1 petabyte or pebibyte.
253 = 9,007,199,254,740,992
The number until which all integer values can exactly be represented in IEEE double precision floating-point format. Also the first power of 2 to start with the digit 9 in decimal.
256 = 72,057,594,037,927,936
The number of different possible keys in the obsolete 56 bit DES symmetric cipher.
260 = 1,152,921,504,606,846,976
The binary approximation of the exa-, or 1,000,000,000,000,000,000 multiplier. 1,152,921,504,606,846,976 bytes = 1 exabyte or exbibyte.
263 = 9,223,372,036,854,775,808
The number of non-negative values for a signed 64-bit integer.
263 − 1, a common maximum value (equivalently the number of positive values) for a signed 64-bit integer in programming languages.
264 = 18,446,744,073,709,551,616
The number of distinct values representable in a single word on a 64-bit processor. Or, the number of values representable in a doubleword on a 32-bit processor. Or, the number of values representable in a quadword on a 16-bit processor, such as the original x86 processors.[4]
The range of a long variable in the Java and C# programming languages.
The range of a Int64 or QWord variable in the Pascal programming language.
The total number of IPv6 addresses generally given to a single LAN or subnet.
264 − 1, the number of grains of rice on a chessboard, according to the old story, where the first square contains one grain of rice and each succeeding square twice as many as the previous square. For this reason the number is sometimes known as the «chess number».
264 − 1 is also the number of moves required to complete the legendary 64-disk version of the Tower of Hanoi.
268 = 295,147,905,179,352,825,856
The first power of 2 to contain all decimal digits. (sequence A137214 in the OEIS)
270 = 1,180,591,620,717,411,303,424
The binary approximation of the zetta-, or 1,000,000,000,000,000,000,000 multiplier. 1,180,591,620,717,411,303,424 bytes = 1 zettabyte (or zebibyte).
280 = 1,208,925,819,614,629,174,706,176
The binary approximation of the yotta-, or 1,000,000,000,000,000,000,000,000 multiplier. 1,208,925,819,614,629,174,706,176 bytes = 1 yottabyte (or yobibyte).
286 = 77,371,252,455,336,267,181,195,264
286 is conjectured to be the largest power of two not containing a zero in decimal.[7]
296 = 79,228,162,514,264,337,593,543,950,336
The total number of IPv6 addresses generally given to a local Internet registry. In CIDR notation, ISPs are given a /32, which means that 128-32=96 bits are available for addresses (as opposed to network designation). Thus, 296 addresses.
2108 = 324,​518,​553,​658,​426,​726,​783,​156,​020,​576,​256
The largest known power of 2 not containing a 9 in decimal. (sequence A035064 in the OEIS)
2126 = 85,​070,​591,​730,​234,​615,​865,​843,​651,​857,​942,​052,​864
The largest known power of 2 not containing a pair of consecutive equal digits. (sequence A050723 in the OEIS)
2128 = 340,282,366,920,938,463,463,374,607,431,768,211,456
The total number of IP addresses available under IPv6. Also the number of distinct universally unique identifiers (UUIDs).
2168 = 374,144,419,156,711,147,060,143,317,175,368,453,031,918,731,001,856
The largest known power of 2 not containing all decimal digits (the digit 2 is missing in this case). (sequence A137214 in the OEIS)
2192 = 6,277,101,735,386,680,763,835,789,423,207,666,416,102,355,444,464,034,512,896
The total number of different possible keys in the AES 192-bit key space (symmetric cipher).
2229 = 862,718,293,348,820,473,429,344,482,784,628,181,556,388,621,521,298,319,395,315,527,974,912
2229 is the largest known power of two containing the least number of zeros relative to its power. It is conjectured by Metin Sariyar that every digit 0 to 9 is inclined to appear an equal number of times in the decimal expansion of power of two as the power increases. (sequence A330024 in the OEIS)
2256 = 115,792,089,237,316,195,423,570,985,008,687,907,853,269,984,665,640,564,039,457,584,007,913,129,639,936
The total number of different possible keys in the AES 256-bit key space (symmetric cipher).
2332 = 8,749,002,899,132,047,697,490,008,908,470,485,461,412,677,723,572,849,745,703,082,425,639,811,996,797,503,692,894,052,708,092,215,296
The largest power of 2 smaller than a googol (10100).
2333 = 17,498,005,798,264,095,394,980,0…,007,385,788,105,416,184,430,592
The smallest power of 2 greater than a googol (10100).
21,024 = 179,769,313,486,231,590,772,930,…,304,835,356,329,624,224,137,216
The maximum number that can fit in a 64-bit IEEE double-precision floating-point format (approximately 1.797×10308), and hence the maximum number that can be represented by many programs, for example Microsoft Excel.
216,384 = 1,189,731,495,357,231,765,085,75…,460,447,027,290,669,964,066,816
The maximum number that can fit in a 128-bit IEEE quadruple-precision floating-point format (approximately 1.189×104932).
2262,144 = 16,113,257,174,857,604,736,195,7…,753,862,605,349,934,298,300,416
The maximum number that can fit in a 256-bit IEEE octuple-precision floating-point format (approximately 1.611×1078913).
282,589,933 = 1,488,944,457,420,413,255,478,06…,074,037,951,210,325,217,902,592
One more than the largest known prime number as of December 2018. It has 24,862,048 digits.[8]

Powers of two in music theory[edit]

In musical notation, all unmodified note values have a duration equal to a whole note divided by a power of two; for example a half note (1/2), a quarter note (1/4), an eighth note (1/8) and a sixteenth note (1/16). Dotted or otherwise modified notes have other durations. In time signatures the lower numeral, the beat unit, which can be seen as the denominator of a fraction, is almost always a power of two.

If the ratio of frequencies of two pitches is a power of two, then the interval between those pitches is full octaves. In this case, the corresponding notes have the same name.

Other properties[edit]

As each increase in dimension doubles the number of shapes, the sum of coefficients on each row of Pascal’s triangle is a power of two

The sum of powers of two from zero to a given power, inclusive, is 1 less than the next power of two, whereas the sum of powers of two from minus-infinity to a given power, inclusive, equals the next power of two

The sum of all n-choose binomial coefficients is equal to 2n. Consider the set of all n-digit binary integers. Its cardinality is 2n. It is also the sums of the cardinalities of certain subsets: the subset of integers with no 1s (consisting of a single number, written as n 0s), the subset with a single 1, the subset with two 1s, and so on up to the subset with n 1s (consisting of the number written as n 1s). Each of these is in turn equal to the binomial coefficient indexed by n and the number of 1s being considered (for example, there are 10-choose-3 binary numbers with ten digits that include exactly three 1s).

Currently, powers of two are the only known almost perfect numbers.

The number of vertices of an n-dimensional hypercube is 2n. Similarly, the number of (n − 1)-faces of an n-dimensional cross-polytope is also 2n and the formula for the number of x-faces an n-dimensional cross-polytope has is {displaystyle 2^{x}{tbinom {n}{x}}.}

The sum of the reciprocals of the powers of two is 1. The sum of the reciprocals of the squared powers of two (powers of four) is 1/3.

The smallest natural power of two whose decimal representation begins with 7 is[9]

{displaystyle 2^{46}=70 368 744 177 664.}

Every power of 2 (excluding 1) can be written as the sum of four square numbers in 24 ways. The powers of 2 are the natural numbers greater than 1 that can be written as the sum of four square numbers in the fewest ways.

As a real polynomial, an + bn is irreducible, if and only if n is a power of two. (If n is odd, then an + bn is divisible by a+n, and if n is even but not a power of 2, then n can be written as n=mp, where m is odd, and thus {displaystyle a^{n}+b^{n}=(a^{p})^{m}+(b^{p})^{m}}, which is divisible by ap + bp.)
But in the domain of complex numbers, the polynomial {displaystyle a^{2n}+b^{2n}} (where n>=1) can always be factorized as
{displaystyle a^{2n}+b^{2n}=(a^{n}+b^{n}i)cdot (a^{n}-b^{n}i)},
even if n is a power of two.

See also[edit]

  • 2048 (video game)
  • Binary number
  • Fermi–Dirac prime
  • Geometric progression
  • Gould’s sequence
  • Inchworm (song)
  • Integer binary logarithm
  • Octave (electronics)
  • Power of 10
  • Power of three
  • Sum-free sequence

References[edit]

  1. ^ Lipschutz, Seymour (1982). Schaum’s Outline of Theory and Problems of Essential Computer Mathematics. New York: McGraw-Hill. p. 3. ISBN 0-07-037990-4.
  2. ^ Sewell, Michael J. (1997). Mathematics Masterclasses. Oxford: Oxford University Press. p. 78. ISBN 0-19-851494-8.
  3. ^ Guy, Richard K. (2004), «E24 Irrationality sequences», Unsolved problems in number theory (3rd ed.), Springer-Verlag, p. 346, ISBN 0-387-20860-7, Zbl 1058.11001, archived from the original on 2016-04-28
  4. ^ a b c Though they vary in word size, all x86 processors use the term «word» to mean 16 bits; thus, a 32-bit x86 processor refers to its native wordsize as a dword
  5. ^ Prime Curios!: 536870912 «Prime Curios! 536870912». Archived from the original on 2017-09-05. Retrieved 2017-09-05.
  6. ^ «Powers of 2 Table — — — — — — Vaughn’s Summaries». www.vaughns-1-pagers.com. Archived from the original on August 12, 2015.
  7. ^ Weisstein, Eric W. «Zero.» From MathWorld—A Wolfram Web Resource. «Zero». Archived from the original on 2013-06-01. Retrieved 2013-05-29.
  8. ^ «Mersenne Prime Discovery — 2^82589933-1 is Prime!». www.mersenne.org.
  9. ^ Paweł Strzelecki (1994). «O potęgach dwójki (About powers of two)» (in Polish). Delta. Archived from the original on 2016-05-09.

Вычисляем сумму больших степеней двойки

…которые не влезут «совсем никуда», ни в какие типы данных, например, 20+21+...+2100. При этом, хотелось бы точно, а не с точностью до порядка.

Помочь может сколь угодно старый компилятор с абсолютно любого языка, достаточно, чтоб он умел работать с массивами и у нас хватило толку реализовать школьное умножение в столбик.

Искомый предел суммирования (верхнюю степень двойки) обозначим m, предельный размер массива n, грубо оценить его можно, например, как n = m/2, на самом деле, с ростом степени числа нужно меньше знаков. Да и если переборщим с размером массива, не страшно, просто в числе останутся лидирующие нули.

В листинге ниже проверяется «число зёрен на шахматной доске», вроде, совпало.

#include <stdio.h>

void udvoyalka (int n, int *a) {
 for (int i=n-1; i>-1; i--) {
  a[i]*=2;
  if (a[i]>9) a[i+1]+=a[i]/10;
  a[i]%=10;
 }
}

void main () {
 const int n = 19, //Размер буфера под запись числа
	   m = 64; //Степень двойки, до которой вычисляем (не включая)
 int s[n+1],i;
 for (i=0; i<=n; i++) s[i]=0;
 s[0]=1;
 for (i=1; i<=m; i++) udvoyalka (n,s);
 s[0]--;
 for (i=n; i>-1; i--) printf ("%d",s[i]);
 getchar ();
}

Фактически, здесь реализовано умножение в столбик на 2. Число при этом представлено как массив, в котором младшие разряды числа начинаются с 0-го элемента. То есть, считается сумма ряда 20+21+...+263, представленного формулой

Вычислить сумму степеней двойки, например, до 21100 включительно, ни один пакет уже не может, предел точности для типа double ~ 10308, но мы, подставив в программу n=332, m=1101, легко получим ответ:

02716597058098771698554702856718533557206987693863489099497039339455626185508483
69744107841664151211845971565259076947669500774510864698599423110966856012574437
71526998812780663565728288329361461533674321052446353025596871544259913106710572
06440616076155151946464039797018976800813823224616829575087436731693493029789758
1105488330751

(это одно число, переносы строк, чтоб не «рвало макет»).

(а сама запись, чтоб проверить rss, что-то напортачил в шаблоне спьяну)

11.10.2014, 21:55 [12338 просмотров]


К этой статье пока нет комментариев, Ваш будет первым

И. Акулич
«Квант» №2, 2012

Давайте рассмотрим последовательность чисел, первое из которых равно 1, а каждое последующее вдвое больше: 1, 2, 4, 8, 16, … Используя показатели степени, ее можно записать в эквивалентном виде: 20, 21, 22, 23, 24, … Называется она вполне ожидаемо: последовательность степеней двойки. Казалось бы, ничего выдающегося в ней нет — последовательность как последовательность, не лучше и не хуже других. Тем не менее, она обладает весьма примечательными свойствами.

Несомненно, многие читатели встречали ее в классической истории об изобретателе шахмат, который попросил у правителя в награду за первую клетку шахматной доски одно пшеничное зерно, за вторую — два, за третью — четыре, и так далее, всё время удваивая число зерен. Понятно, что суммарное их количество равно

= 20 + 21 + 22 + 2+ 24 + … + 263. (1)

Но так как эта сумма неимоверно велика и во много раз превосходит годовой урожай зерновых по всему миру, вышло, что мудрец ободрал правителя как липку.1

Однако зададимся сейчас другим вопросом: как с наименьшими затратами труда подсчитать величину S? Обладатели калькулятора (или, паче того, компьютера) вполне могут за обозримое время выполнить перемножения, а затем сложить полученные 64 числа, получив ответ: 18 446 744 073 709 551 615. А поскольку объем вычислений немалый, то и вероятность ошибки весьма велика.

Кто похитрей, могут углядеть в этой последовательности геометрическую прогрессию. Не знакомые же с этим понятием (или те, кто попросту забыл стандартную формулу суммы геометрической прогрессии) могут использовать следующие рассуждения. Давайте-ка умножим обе части равенства (1) на 2. Так как при удвоении степени двойки ее показатель увеличивается на 1, то получим

2S = 21 + 22 + 23 + 24 + … + 264. (2)

Теперь из (2) вычтем (1). В левой части, понятное дело, получится 2S – S = S. В правой же части произойдет массовое взаимное уничтожение почти всех степеней двойки — от 21 до 263 включительно, и останется лишь 264 – 20 = 264 – 1. Итак:

S = 264 – 1.

Что ж, выражение заметно упростилось, и теперь, имея калькулятор, позволяющий возводить в степень, можно найти значение этой величины без малейших проблем.

А если и калькулятора нет — как быть? Перемножать в столбик 64 двойки? Еще чего не хватало! Опытный инженер или математик-прикладник, для которого главный фактор — время, сумел бы быстро оценить ответ, т.е. найти его приближенно с приемлемой точностью. Как правило, в быту (да и в большинстве естественных наук) вполне допустима погрешность в 2–3%, а если она не превосходит 1% — то это просто великолепно! Оказывается, подсчитать наши зерна с такой погрешностью можно вообще без калькулятора, и всего за несколько минут. Как? Сейчас увидите.

Итак, надо возможно точней найти произведение 64 двоек (единицу в силу ее ничтожности отбросим сразу). Разобьем их на отдельную группу из 4 двоек и еще на 6 групп по 10 двоек. Произведение двоек в отдельной группе равно 24 = 16. А произведение 10 двоек в каждой из остальных групп равно 210 = 1024 (убедитесь, кто сомневается!). Но 1024 — это около 1000, т.е. 103. Поэтому S должно быть близко к произведению числа 16 на 6 чисел, каждое из которых равно 103, т.е. S ≈ 16·1018 (ибо 18 = 3·6). Правда, погрешность здесь все же великовата: ведь 6 раз при замене 1024 на 1000 мы ошибались в 1,024 раза, а всего мы ошиблись, как легко видеть, в 1,0246 раз. Так что теперь — дополнительно перемножать 1,024 шесть раз само на себя? Нет уж, обойдемся! Известно, что для числа х, которое во много раз меньше 1, с высокой точностью справедлива следующая приближенная формула: (1 + x)n ≈ 1 + xn.

Поэтому 1,0246 = (1 + 0,24)6  1 + 0,24·6 = 1,144. Посему надо найденное нами число 16·1018 умножить на число 1,144, в результате чего получится 18 304 000 000 000 000 000, а это отличается от правильного ответа менее чем на 1%. Чего мы и добивались!

В данном случае нам крупно повезло: одна из степеней двойки (а именно — десятая) оказалась весьма близка к одной из степеней десятки (а именно — третьей). Это позволяет нам быстро оценивать значение любой степени двойки, не обязательно 64-й. Среди степеней других чисел подобное встречается нечасто. Например, 510 отличается от 107 также в 1,024 раза, но… в меньшую сторону.2 Впрочем, это того же поля ягода: поскольку 210·510 = 1010, то во сколько раз 210 превосходит 103, во столько же раз 510 меньше, чем 107.

Другая интересная особенность рассматриваемой последовательности заключается в том, что любое натуральное число можно построить из различных степеней двойки, причем единственным способом. Например, для номера текущего года имеем

2012 = 22 + 23 + 24 + 26 + 27 + 28 + 29 + 210.

Доказать эти возможность и единственность не составляет особого труда. Начнем с возможности. Пусть нам надо представить в виде суммы различных степеней двойки некоторое натуральное число N. Сначала запишем его в виде суммы N единиц. Так как единица — это 20, то первоначально N есть сумма одинаковых степеней двойки. Затем начнем объединять их по парам. Сумма двух чисел, равных 20, — это 21, так что в результате получится заведомо меньшее количество слагаемых, равных 21, и, возможно, одно число 20, если ему не нашлось пары. Далее попарно объединяем одинаковые слагаемые 21, получая еще меньшее количество чисел 22 (здесь тоже возможно появление непарной степени двойки 21). Затем снова объединяем равные слагаемые попарно, и так далее. Рано или поздно процесс завершится, ибо количество одинаковых степеней двойки после каждого объединения уменьшается. Когда оно станет равным 1 — дело кончено. Осталось сложить все получившиеся непарные степени двойки — и представление готово.

Что касается доказательства единственности представления, то здесь хорошо подходит метод «от противного». Пусть одно и то же число N удалось представить в виде двух наборов различных степеней двойки, которые не полностью совпадают (т. е. имеются степени двойки, входящие в один набор, но не входящие в другой, и наоборот). Для начала отбросим все совпадающие степени двойки из обоих наборов (если таковые имеются). Получатся два представления одного и того же числа (меньшего или равного N) в виде суммы различных степеней двойки, причем все степени в представлениях различны. В каждом из представлений выделим наибольшую степень. В силу изложенного выше, для двух представлений эти степени различны. То представление, для которого эта степень больше, назовем первым, другое — вторым. Итак, пусть в первом представлении наибольшая степень равна 2m, тогда во втором она, очевидно, не превышает 2m–1. Но поскольку (и мы с этим уже сталкивались выше, подсчитывая зерна на шахматной доске) справедливо равенство

2m = (2m–1 + 2m–2 + … + 20) + 1,

то 2m строго больше суммы всех степеней двойки, не превосходящих 2m–1. По этой причине уже наибольшая степень двойки, входящая в первое представление, наверняка больше суммы всех степеней двойки, входящих во второе представление. Противоречие!

Фактически мы только что обосновали возможность записи чисел в двоичной системе счисления. Как известно, в ней используются лишь две цифры — ноль и единица, и каждое натуральное число записывается в двоичной системе единственным способом (например, упомянутое выше 2012 — как 11 111 011 100). Если пронумеровать разряды (двоичные цифры) справа налево, начиная с нуля, то номера тех разрядов, в которых стоят единицы, как раз и будут показателями степеней двоек, входящих в представление.3

Менее известно следующее свойство множества целых неотрицательных степеней двойки. Давайте некоторым из них произвольным образом присвоим знак «минус», т. е. из положительных сделаем отрицательными. Единственное требование — чтобы в результате и положительных, и отрицательных чисел оказалось бесконечное количество. Например, можно присвоить знак «минус» каждой пятой степени двойки или, допустим, оставить положительными только числа 210, 2100, 21000, и так далее — вариантов здесь сколько угодно.

Как ни удивительно, но любое целое число можно (и притом единственным способом) представить в виде суммы различных слагаемых нашей «положительно-отрицательной» последовательности.4 И доказать это не очень-то сложно (например, индукцией по показателям степеней двоек). Главная идея доказательства — наличие сколь угодно больших по абсолютной величине как положительных, так и отрицательных слагаемых. Попробуйте выполнить доказательство сами.

Интересно понаблюдать за последними цифрами членов последовательности степеней двойки. Так как каждое последующее число последовательности получается удвоением предыдущего, то последняя цифра каждого из них полностью определяется последней цифрой предыдущего числа. А так как различных цифр ограниченное количество, последовательность последних цифр степеней двойки просто обязана быть периодической! Длина периода, естественно, не превышает 10 (поскольку именно столько цифр мы используем), но это сильно завышенное значение. Попробуем оценить его, не выписывая пока саму последовательность. Ясно, что последние цифры всех степеней двойки, начиная с 21, четные. Кроме того, среди них не может быть нуля — потому что число, оканчивающееся нулем, делится на 5, в чем заподозрить степени двойки никак нельзя. А так как четных цифр без нуля имеется всего четыре, то и длина периода не превосходит 4.

Проверка показывает, что так оно и есть, причем периодичность проявляется почти сразу: 1, 2, 4, 8, 6, 2, 4, 8, 6, … — в полном соответствии с теорией!

Не менее успешно можно оценить и длину периода последней пары цифр последовательности степеней двойки. Так как все степени двойки, начиная с 22, делятся на 4, то и числа, образованные их последними двумя цифрами, делятся на 4. Не более чем двузначных чисел, делящихся на 4, имеется всего 25 (для однозначных чисел предпоследней цифрой считаем ноль), но из них надо выбросить пять чисел, оканчивающихся нулем: 00, 20, 40, 60 и 80. Так что период может содержать не более 25 – 5 = 20 чисел. Проверка показывает, что так и есть, начинается период с числа 22 и содержит пары цифр: 04, 08, 16, 32, 64, 28, 56, 12, 24, 48, 96, 92, 84, 68, 36, 72, 44, 88, 76, 52, а затем опять 04 и так далее.

Аналогично можно доказать, что длина периода последних m цифр последовательности степеней двойки не превышает 4·5m–1 (более того — на самом деле она равна 4·5m–1, но доказать это значительно сложнее).

Итак, на последние цифры степеней двойки наложены довольно жесткие ограничения. А как насчет первых цифр? Здесь ситуация практически противоположная. Оказывается, для любого набора цифр (первая из которых — не ноль) найдется степень двойки, начинающаяся с этого набора цифр. И таких степеней двойки бесконечно много! Например, существует бесконечное количество степеней двойки, начинающихся с цифр 2012 или, скажем, 3 333 333 333 333 333 333 333.

А если рассмотреть только одну самую первую цифру различных степеней двойки — какие значения она может принимать? Нетрудно убедиться, что любые — от 1 до 9 включительно (нуля среди них, естественно, нет). Но какие из них встречаются чаще, а какие реже? Как-то сразу не видно причин, по которым одна цифра должна встречаться чаще другой. Однако более глубокие размышления показывают, что как раз равной встречаемости цифр ожидать не приходится. Действительно, если первая цифра какой-либо степени двойки есть 5, 6, 7, 8 или 9, то первая цифра следующей за ней степени двойки будет обязательно единицей! Поэтому должен иметь место «перекос», по крайней мере, в сторону единицы. Следовательно, вряд ли и остальные цифры будут «равнопредставленными».

Практика (а именно — прямой компьютерный расчет для первых нескольких десятков тысяч степеней двойки) подтверждает наши подозрения. Вот какова относительная доля первых цифр степеней двойки с округлением до 4 знаков после запятой:

1 — 0,3010
2 — 0,1761
3 — 0,1249
4 — 0,0969
5 — 0,0792
6 — 0,0669
7 — 0,0580
8 — 0,0512
9 — 0,0458

Как видим, с ростом цифр эта величина убывает (и потому та же единица примерно в 6,5 раз чаще бывает первой цифрой степеней двойки, чем девятка). Как ни покажется странным, но практически такое же соотношение количеств первых цифр будет иметь место почти для любой последовательности степеней — не только двойки, но, скажем, и тройки, пятерки, восьмерки и вообще почти любого числа, в том числе и нецелого (исключение составляют лишь некоторые «особые» числа). Причины этого весьма глубоки и непросты, и для их уяснения надо знать логарифмы. Для тех, кто с ними знаком, приоткроем завесу: оказывается, относительная доля степеней двойки 5, десятичная запись которых начинается с цифры F (для F = 1, 2, …, 9), составляет lg (F + 1) – lg (F), где lg — так называемый десятичный логарифм, равный показателю степени, в которую надо возвести число 10, чтобы получить число, стоящее под знаком логарифма.6

Используя упомянутую выше связь между степенями двойки и пятерки, А. Канель обнаружил интересное явление. Давайте из последовательности первых цифр степеней двойки (1, 2, 4, 8, 1, 3, 6, 1, 2, 5, …) выберем несколько цифр подряд и запишем их в обратном порядке. Оказывается, эти цифры непременно встретятся тоже подряд, начиная с некоторого места, в последовательности первых цифр степеней пятерки.7

Степени двойки также являются своеобразным «генератором» для производства широко известных совершенных чисел, которые равны сумме всех своих делителей, за исключением себя самого. Например, у числа 6 четыре делителя: 1, 2, 3 и 6. Отбросим тот, который равен самому числу 6. Осталось три делителя, сумма которых как раз равна 1 + 2 + 3 = 6. Поэтому 6 — совершенное число.

Для получения совершенного числа возьмем две последовательные степени двойки: 2n–1 и 2n. Уменьшим большую из них на 1, получим 2n – 1. Оказывается, если это — простое число, то, домножив его на предыдущую степень двойки, мы образуем совершенное число 2n–1 (2n – 1). Например, при п = 3 получаем исходные числа 4 и 8. Так как 8 – 1 = 7 — простое число, то 4·7 = 28 — совершенное число.8 Более того — в свое время Леонард Эйлер доказал, что все четные совершенные числа имеют именно такой вид. Нечетные совершенные числа пока не обнаружены (и мало кто верит в их существование).

Тесную связь имеют степени двойки с так называемыми числами Каталана, последовательность которых имеет вид 1, 1, 2, 5, 14, 42, 132, 429… Они часто возникают при решении различных комбинаторных задач. Например, сколькими способами можно разбить выпуклый n-угольник на треугольники непересекающимися диагоналями? Всё тот же Эйлер выяснил, что это значение равно (n – 1)-му числу Каталана (обозначим его Kn–1), и он же выяснил, что Kn = Kn–1·(4n – 6)/n. Последовательность чисел Каталана имеет множество любопытных свойств, и одно из них (как раз связанное с темой этой статьи) заключается в том, что порядковые номера всех нечетных чисел Каталана являются степенями двойки!

Степени двойки нередко встречаются в различных задачах, причем не только в условиях, но и в ответах. Возьмем, например, популярную когда-то (да и поныне не забытую) Ханойскую башню. Так называлась игра-головоломка, придуманная в XIX веке французским математиком Э. Люка. Она содержит три стержня, на один из которых надето n дисков с отверстием в середине каждого. Диаметры всех дисков различны, и они расположены в порядке убывания снизу вверх, т. е. самый большой диск — внизу (см. рисунок). Получилась как бы башня из дисков.

Ханойская  башня

Требуется перенести эту башню на другой стержень, соблюдая такие правила: перекладывать диски строго по одному (снимая верхний диск с любого стержня) и всегда класть только меньший диск на больший, но не наоборот. Спрашивается: какое наименьшее число ходов для этого потребуется? (Ходом мы называем снятие диска с одного стержня и надевание его на другой.) Ответ: оно равно 2n – 1, что легко доказывается по индукции.

Пусть для n дисков потребное наименьшее число ходов равно Xn. Найдем Xn+1. В процессе работы рано или поздно придется снимать самый большой диск со стержня, на который первоначально были надеты все диски. Так как этот диск можно надевать только на пустой стержень (иначе он «придавит» меньший диск, что запрещено), то все верхние n дисков придется предварительно перенести на третий стержень. Для этого потребуется не меньше Xn ходов. Далее переносим наибольший диск на пустой стержень — вот еще один ход. Наконец, чтобы сверху его «притиснуть» меньшими n дисками, опять потребуется не меньше Xn ходов. Итак, Xn+1 ≥ Xn + 1 + Xn = 2Xn + 1. С другой стороны, описанные выше действия показывают, как можно справиться с задачей именно 2Xn + 1 ходами. Поэтому окончательно Xn+1 =2X+ 1. Получено рекуррентное соотношение, но для того чтобы его привести к «нормальному» виду, надо еще найти X1. Ну, это проще простого: X1 1 (меньше просто не бывает!). Не составляет труда, основываясь на этих данных, выяснить, что Xn = 2– 1.

Вот еще одна интересная задача:

Найдите все натуральные числа, которые нельзя представить в виде суммы нескольких (не менее двух) последовательных натуральных чисел.

Давайте проверим сначала наименьшие числа. Ясно, что число 1 в указанном виде непредставимо. Зато все нечетные, которые больше 1, представить, конечно, можно. В самом деле, любое нечетное число, большее 1, можно записать как 2k + 1 (k — натуральное), что есть сумма двух последовательных натуральных чисел: 2k + 1 = k + (k + 1).

А как обстоят дела с четными числами? Легко убедиться, что числа 2 и 4 нельзя представить в требуемом виде. Может, и для всех четных чисел так? Увы, следующее же четное число опровергает наше предположение: 6 = 1 + 2 + 3. Зато число 8 опять не поддается. Правда, следующие числа вновь уступают натиску: 10 = 1 + 2 + 3 + 4, 12 = 3 + 4 + 5, 14 = 2 + 3 + 4 + 5, а вот 16 — вновь непредставимо.

Что ж, накопленная информация позволяет сделать предварительные выводы. Обратите внимание: не удалось представить в указанном виде только степени двойки. Верно ли это для остальных чисел? Оказывается, да! В самом деле, рассмотрим сумму всех натуральных чисел от m до n включительно. Так как всего их, по условию, не меньше двух, то n > m. Как известно, сумма последовательных членов арифметической прогрессии (а ведь именно с ней мы имеем дело!) равна произведению полусуммы первого и последнего членов на их количество. Полусумма равна (n + m)/2, а количество чисел равно n – m + 1. Поэтому сумма равна (n + m)(n – m + 1)/2. Заметим, что в числителе находятся два сомножителя, каждый из которых строго больше 1, и при этом четность их — различна. Выходит, что сумма всех натуральных чисел от m до n включительно делится на нечетное число, большее 1, и потому не может быть степенью двойки. Так что теперь понятно, почему не удалось представить степени двойки в нужном виде.

Осталось убедиться, что не степени двойки представить можно. Что касается нечетных чисел, то с ними мы уже разобрались выше. Возьмем какое-либо четное число, не являющееся степенью двойки. Пусть наибольшая степень двойки, на которую оно делится, это 2a (a — натуральное). Тогда если число поделить на 2a, получится уже нечетное число, большее 1, которое мы запишем в знакомом виде — как 2+ 1 (k — тоже натуральное). Значит, в целом наше четное число, не являющееся степенью двойки, равно 2a (2k + 1). А теперь рассмотрим два варианта:

  1. 2a+1 > 2k + 1. Возьмем сумму 2+ 1 последовательных натуральных чисел, среднее из которых равно 2a. Легко видеть, что тогда наименьшее из них равно 2– k, а наибольшее равно 2a + k, причем наименьшее (и, значит, все остальные) — положительное, т. е. действительно натуральное. Ну, а сумма, очевидно, составляет как раз 2a(2k + 1).
  2. 2a+1 < 2k + 1. Возьмем сумму 2a+1 последовательных натуральных чисел. Здесь нельзя указать среднее число, ибо количество чисел четное, но указать пару средних чисел можно: пусть это числа k и + 1. Тогда наименьшее из всех чисел равно + 1 – 2a (и тоже положительное!), а наибольшее равно + 2a. Сумма их тоже равна 2a(2k + 1).

Вот и всё. Итак, ответ: непредставимые числа — это степени двойки, и только они.

А вот еще одна задача (впервые ее предложил В. Произволов, но в несколько иной формулировке):

Садовый участок окружен сплошным забором из N досок. Согласно приказу тети Полли Том Сойер белит забор, но по собственной системе: продвигаясь всё время по часовой стрелке, сначала белит произвольную доску, затем пропускает одну доску и белит следующую, затем пропускает две доски и белит следующую, затем пропускает три доски и белит следующую, и так далее, каждый раз пропуская на одну доску больше (при этом некоторые доски могут быть побелены несколько раз — Тома это не смущает).

Том считает, что при такой схеме рано или поздно все доски будут побелены, а тетя Полли уверена, что хотя бы одна доска останется непобеленной, сколько бы Том ни работал. При каких N прав Том, а при каких — тетя Полли?

Описанная система побелки представляется довольно хаотичной, поэтому первоначально может показаться, что для любого (или почти любого) N каждой доске когда-нибудь достанется своя доля известки, т. е., в основном, прав Том. Но первое впечатление обманчиво, потому что на самом деле Том прав только для значений N, являющихся степенями двойки. Для остальных N найдется доска, которая так и останется навеки непобеленной. Доказательство этого факта довольно громоздко (хотя, в принципе, несложно). Предлагаем читателю выполнить его самому.

Вот каковы они — степени двойки. С виду — проще простого, а как копнешь… И затронули мы здесь далеко не все удивительные и загадочные свойства этой последовательности, а лишь те, что бросились в глаза. Ну, а читателю предоставляется право самостоятельно продолжить исследования в этой области. Несомненно, они окажутся плодотворными.


1 Впрочем, действительно ли правитель согласился выплатить требуемое, история умалчивает. Более вероятно, что для мудреца все закончилось длительным тюремным заключением по статье «за наглость».
2 Для любопытных вот еще одно хорошее совпадение: 69 = 10 077 696, в котором относительное расхождение с ближайшей степенью десятки всего около 0,8%, что примерно втрое меньше, чем для 210.
3 Повсеместно используемая десятичная система устроена по такому же принципу. Только вместо степеней двойки используются степени десятки (потому она так и называется), а цифры в записи показывают, в каком количестве очередную степень десятки надо прибавлять.
4 При этом число 0 (ноль) представляется как полное отсутствие слагаемых (т.е., формально говоря, нулевое их количество).
5 И не только двойки, как было отмечено ранее!
6 Жаждущие подробностей могут прочесть статью В. Болтянского «Часто ли степени двойки начинаются с единицы?» («Квант» №5 за 1978 г.), а также статью В. Арнольда «Статистика первых цифр степеней двойки и передел мира» («Квант» №1 за 1998 г.).
7 См. задачу М1599 из «Задачника «Кванта» («Квант» №6 за 1997 г.).
8 В настоящее время известны 43 совершенных числа, наибольшее из которых равно 230402456(230402457 – 1). Оно содержит свыше 18 миллионов цифр.

Подскажите, пжл, алгоритм. На входе может быть сумма любых степеней 2, максимальная 2^9 = 512, например:

1) 2 + 512 = 514

2) 1 + 16 + 32 = 49

3) 64 + 128 = 192

задан 8 июл 2014 в 14:15

zooZooz's user avatar

По сути, степени двойки, из которых складывается число отражаются позициями единиц в его двоичном представлении. Например, число 123 в двоичной системе счисления выглядит так: 1111011. Единицы в позициях 0, 1, 3, 4, 5 (нумерация идёс справа налево, начинается с 0). Значит, 123 = 2^0 + 2^1 + 2^3 + 2^4 + 2^5 + 2^6 = 1 + 2 + 8 + 16 + 32 + 64. Про перевод чисел в двоичную СС написано много, я на этом останавливаться не буду.

Если побитовая арифметика для вас выглядит слишком сложной, то можно применить «жадный» алгоритм. Суть такова: на каждой итерации мы подбираем максимальную степень двойки, меньшую либо равную текущему числу. Запоминаем её как одно из слагаемых и отнимаем от числа. Повторяем до тех пор, пока число не станет равным 0.

Пример: разложим число 123.

  1. Максимальная степень двойки, меньшая или равная 123 — 64. Запоминаем 64, отнимаем его от 123, получаем 59.
  2. Максимальная степень двойки, меньшая или равная 59 — 32. Запоминаем 32, отнимаем его от 59, получаем 27.
  3. Максимальная степень двойки, меньшая или равная 27 — 16. Запоминаем 16, отнимаем его от 27, получаем 11.
  4. Максимальная степень двойки, меньшая или равная 11 — 8. Запоминаем 8, отнимаем его от 11, получаем 3.
  5. Максимальная степень двойки, меньшая или равная 3 — 2. Запоминаем 2, отнимаем его от 11, получаем 1.
  6. Максимальная степень двойки, меньшая или равная 1 — 1. Запоминаем 1, отнимаем его от 1, получаем 0.

Алгоритм закончил работу, в результате 123 = 64 + 32 + 16 + 8 + 2 + 1.

ответ дан 8 июл 2014 в 14:31

fori1ton's user avatar

fori1tonfori1ton

23.3k3 золотых знака49 серебряных знаков70 бронзовых знаков

Для решения поставленной задачи достаточно протестировать каждый из 10 битов числа. Самое простое — логическое И со сдвинутой единицей:

function bit_analysis($n){
    $bin_powers = array();
    for($bit = 0; $bit<10; $bit++){
        $bin_power = 1 << $bit;
        if($bin_power & $n) $bin_powers[$bit] = $bin_power;
    }
    return $bin_powers;     
}

$n = 514;
print("n=$n");
var_dump(bit_analysis($n));

$n = 49;
print("n=$n");
var_dump(bit_analysis($n));

$n = 192;
print("n=$n");
var_dump(bit_analysis($n));

Результаты:

n=514
array (size=2)
  1 => int 2
  9 => int 512
n=49
array (size=3)
  0 => int 1
  4 => int 16
  5 => int 32
n=192
array (size=2)
  6 => int 64
  7 => int 128

Ключи равны номеру соответствующего бита (или степени двойки, что то же самое).

ответ дан 8 дек 2015 в 21:35

Yuri Negometyanov's user avatar

Начну:

1) проверяем число «a» на четность

1а) если четное a=b, переходим ко второму пункту

1б) если нечетное, то ряд начинаем с единицы, получаем b=(a-1) и идем дальше оперируя текущим числом b

2) число b делим на 2 до тех пор пока не получим нечетное число, запоминаем количество делений i, возводим 2 в степень i, записываем это число z в нужный нам ряд,

3) b-z=c и переходим к пункту 2

4) выстраиваем полученный ряд по возрастанию

Вроде так, могу ошибаться.

ответ дан 8 июл 2014 в 14:29

Shilgen's user avatar

ShilgenShilgen

1,1381 золотой знак16 серебряных знаков35 бронзовых знаков

1


Загрузить PDF


Загрузить PDF

Степень, а точнее показатель степени, говорит нам о том, сколько раз следует умножить данное число (основание степени) на само себя.[1]
Чтобы найти сумму степеней, следует уметь определить, вручную либо на калькуляторе, значение каждого слагаемого. При сложении переменных со степенями необходимо знать правила суммирования схожих членов.

  1. Изображение с названием Add Exponents Step 1

    1

    Вычислите первое степенное выражение. Оно состоит из основания (крупное число внизу) и показателя (меньшее по размеру число справа вверху) степени. Показатель степени определяет, сколько раз следует умножить основание само на себя (например, 2^{{3}}=2times 2times 2).[2]

  2. Изображение с названием Add Exponents Step 2

    2

    Вычислите второе степенное выражение. Для этого умножьте основание степени на само себя столько раз, сколько указано в показателе степени.

  3. Изображение с названием Add Exponents Step 3

    3

    Сложите полученные значения. Таким образом вы найдете сумму двух степенных выражений.

    Реклама

  1. Изображение с названием Add Exponents Step 4

    1

    Найдите на калькуляторе клавишу степени. Как правило, на ней написано y^{{x}}, EXP или x с пустым квадратом, который обозначает показатель степени. Данный метод не годится, если в вашем калькуляторе нет опции возведения в степень.

  2. Изображение с названием Add Exponents Step 5

    2

    Введите первое степенное выражение. Для этого введите сначала основание степени (более крупное число), а затем показатель степени.

  3. Изображение с названием Add Exponents Step 6

    3

    Нажмите клавишу сложения. В результате у вас получится значение первого слагаемого. После этого не нужно нажимать знак равенства (клавишу =).

  4. Изображение с названием Add Exponents Step 7

    4

    Введите второе степенное выражение. Для этого введите сначала основание степени (более крупное число), а затем показатель степени.

  5. Изображение с названием Add Exponents Step 8

    5

    Нажмите знак равенства (клавишу =). В результате у вас получится сумма двух степенных выражений.

    Реклама

  1. Изображение с названием Add Exponents Step 9

    1

    Найдите слагаемые с одинаковыми основаниями и показателями степени. Основание имеет вид более крупного числа (или переменной) внизу, а показатель степени стоит справа вверху.

  2. Изображение с названием Add Exponents Step 10

    2

    Сложите слагаемые с одинаковыми основаниями и показателями степени.[5]
    При работе с переменными можно складывать лишь те члены, у которых одинаковые основания и показатели степени. То есть одинаковыми должны быть ОБЕ эти части.

  3. Изображение с названием Add Exponents Step 11

    3

    Сложите коэффициенты при схожих членах. Помните о том, что при отсутствии коэффициента он равен 1. НЕ складывайте показатели степени. Показатель степени должен остаться прежним.

  4. Изображение с названием Add Exponents Step 12

    4

    Запишите окончательное упрощенное выражение. Помните о том, что складывать следует лишь коэффициенты при членах с одинаковым основанием И показателем степени, причем основание и показатель останутся прежними.

    Реклама

Что вам понадобится

  • Карандаш
  • Лист бумаги
  • Калькулятор

Похожие статьи

Об этой статье

Эту страницу просматривали 224 055 раз.

Была ли эта статья полезной?

Понравилась статья? Поделить с друзьями:
  • Служба аудио не отвечает windows 10 как исправить
  • Как найти среднюю численность постоянного населения
  • Медицинская книжка в электронном виде как найти
  • Как найти косинус через отношение сторон
  • Php как найти 500