-2
$\begingroup$

I want to count from 0 to n. And when I have reached n, adding 1 to n would give me 0 again.

For example:

0, 1, 2, 3, 4, 0, 1, 2, ...

Is there such an algorithm to do this?

Edit:

I need an equation to simple get the number after the given number. In the example above if I put 1 in the equation I would get 2, if I put 4, I would get 0. Maybe algorithm isn't the best word for this problem.

  • 2
    If you're looking for a function, you want $f(m):= $ the unique non-negative integer less than $n+1$ such that $m+1$ is congruent to $f(m) \operatorname{mod} n+1$.2012-02-11

3 Answers 3

0

Here are a few ways to implement a function that adds one to $i$ and jumps back to $0$ after reaching $n$. I've chosen to write these in the C programming language, but they should be easy to port to other imperative languages.

This is probably the most straightforward way to accomplish the task:

 int add_one_upto_n (int i, int n) {     if (i >= n)         return 0;     else         return i + 1; } 

Alternatively, we can use the C divide-and-take-remainder operator %. This will work nicely on modern desktop CPUs, but may be inefficient on simple embedded systems where division is slow:

 int add_one_upto_n (int i, int n) {     return (i + 1) % (n + 1); } 

Also, if $n$ happens to equal $2^k-1$ for some $k$, the % operator may be replaced with a simple bitwise and operation:

 int add_one_upto_n (int i, int n) {     return (i + 1) & n;  /* only works if n + 1 is a power of 2 */ } 

I think that about exhausts all the reasonable ways to do it I could think of. Of course, if we get into the realm of deliberately obfuscated code, I'm sure there are many more creative ways to accomplish this task...

1

This will be the remainder when the consecutive whole numbers are divided by $n+1$.

A C++ code, if that please you:

for(i=0;%@%@;i++)

{

k=i%(n+1);

cout<< k;

}

In the above code, Substitute your value of $n$. And, in between the place where there is a wild card entry, you could put in the maximum number upto which you'd like to count.

  • 0
    What kind of formula do you need: I told you they are the remainder when the consecutive whole numbers are divided by $n+1$. So, the modulo `%` should do. If you tell me what exactly you need to do, "may be" I can be of some help.2012-02-11
0

Maple counting code :

n:=4:  for a from 0  do s:=0:  for k from 1 to n do s:=s+1: print(s); end do;  end do; 

Output is sequence : $0,1,2,3,4,0,1,2,3,4,0,1....$