100個のライトの問題(C言語実装)
942 ワード
100個のランプがあり、1~100から番号をつけ、最初はすべてのランプがオフになっていたが、初めて、すべての番号が1の倍数のランプのスイッチ状態を1回変更した.2回目は、すべての番号が2の倍数のランプのスイッチ状態を1回変更します.3回目は、すべての番号が3の倍数のランプのスイッチ状態を1回変更します.このようにして、すべての番号が100の倍数のランプのスイッチ状態を一度変更します.問、この時点灯しているすべてのランプの番号は?
//100個のランプがあり、1~100から番号をつけ、最初はすべてのランプがオフになっていた//初めて、すべての番号が1の倍数のランプのスイッチ状態を1回変更した.//2回目は、すべての番号が2の倍数のランプのスイッチ状態を1回変更します.//3回目は、すべての番号が3の倍数のランプのスイッチ状態を1回変更します.//このようにして、すべての番号が100倍のランプのスイッチ状態を一度変えるまで押します.質問ですが、このとき点灯しているすべてのランプの番号を教えてください.
結果は
//100個のランプがあり、1~100から番号をつけ、最初はすべてのランプがオフになっていた//初めて、すべての番号が1の倍数のランプのスイッチ状態を1回変更した.//2回目は、すべての番号が2の倍数のランプのスイッチ状態を1回変更します.//3回目は、すべての番号が3の倍数のランプのスイッチ状態を1回変更します.//このようにして、すべての番号が100倍のランプのスイッチ状態を一度変えるまで押します.質問ですが、このとき点灯しているすべてのランプの番号を教えてください.
#include
#include
#include
int main(){
int arr[101]={0};
int i,j;
for(i=1;i<101;i++){
for(j=1;j<101;j++){
if(j%i==0){
arr[j]= (arr[j]==0?1:0);
}
}
}
for(i=1;i<101;i++){
if(arr[i]==1){
printf("%d ",i);
}
}
return 0;
system("pause");
}
結果は
1 4 9 16 25 36 49 64 81 100