Cullen and Woodall numbers: Difference between revisions
Content deleted Content added
m Added language identifier. |
New post. |
||
Line 514: | Line 514: | ||
<pre>Igual que la entrada de FreeBASIC.</pre> |
<pre>Igual que la entrada de FreeBASIC.</pre> |
||
=={{header|C++}}== |
|||
<syntaxhighlight lang="c++"> |
|||
#include <cstdint> |
|||
#include <iostream> |
|||
#include <string> |
|||
uint32_t number, power; |
|||
void number_initialise() { |
|||
number = 0; |
|||
power = 1; |
|||
} |
|||
enum NumberType { Cullen, Woodhall }; |
|||
uint32_t next_number(NumberType number_type) { |
|||
number += 1; |
|||
power <<= 1; |
|||
switch ( number_type ) { |
|||
case Cullen: return number * power + 1; |
|||
case Woodhall: return number * power - 1; |
|||
}; |
|||
return 0; |
|||
} |
|||
void number_sequence(uint32_t count, NumberType number_type) { |
|||
std::string type = ( number_type == Cullen ) ? "Cullen" : "Woodhall"; |
|||
std::cout << "The first " << count << " " << type << " numbers are:" << std::endl; |
|||
number_initialise(); |
|||
for ( uint32_t index = 1; index <= count; ++index ) { |
|||
std::cout << next_number(number_type) << " "; |
|||
} |
|||
std::cout << std::endl << std::endl; |
|||
} |
|||
int main() { |
|||
number_sequence(20, Cullen); |
|||
number_sequence(20, Woodhall); |
|||
} |
|||
</syntaxhighight> |
|||
{{ out }} |
|||
<pre> |
|||
The first 20 Cullen numbers are: |
|||
3 9 25 65 161 385 897 2049 4609 10241 22529 49153 106497 229377 491521 1048577 2228225 4718593 9961473 20971521 |
|||
The first 20 Woodhall numbers are: |
|||
1 7 23 63 159 383 895 2047 4607 10239 22527 49151 106495 229375 491519 1048575 2228223 4718591 9961471 20971519 |
|||
</pre> |
|||
=={{header|Delphi}}== |
=={{header|Delphi}}== |