【C++】「数学パズル」カードを裏返せ

プログラマ脳を鍛える「数学パズル」の中にあるQ03カードを裏返せの考え方をC++で作ってみました。

説明

1~100までの番号が書かれた100枚のカードが順番に並べられています。
最初、すべてのカードは裏返しで置かれています。

1人目:2番目のカードから1枚おきに裏返し → 2,4,6,8・・・100が表となる
2人目:3番目のカードから2枚おきに裏返し → 2,3,4,8,9・・・が表となる
       ※裏返しは裏向きのカードは表を向き、表向きのカードは裏を向く
このようにn番目のカードからn-1枚おきにカードを裏返す作業を100枚目まで 続けたとき、裏向きになっているカードをすべて表示しなさい。

–答え
1
4
9
16
25
36
49
64
81
100

繰り返しで作成

#include <iostream>
using namespace std;
// カードを裏返す
void reverse()
{
	int cards[100] = { 0 };
	for (int i = 2; i <= 100; i++)
	{
		for (int j = i - 1; j < 100; j += i)
		{
			// 裏なら表へ、表なら裏へ
			cards[j] = cards[j] == 0 ? 1 : 0;
		}
	}
	for (int i = 0; i < 100; i++)
	{
		if (cards[i] == 0)
			cout << i+1 << '\n';
	}
}
int main()
{
	reverse();
	return 0;
}