Serendi_Pity @ 2022-09-14 19:30:10
输入10, 输出1 2 3 4 5 6 7 8 9 10
#include<iostream>
using namespace std;
int main(){
int b,c;
c=2;
cin>>b;
int a[b+1];
for(int i=0;i<=b;i++){
a[i]=0;
}
for(int j=0;j<=b;j++){
if(j%c==0){
if(a[j]==0){
a[j]=1;
}else{
a[j]=0;
}
}
c++;
}
for(int i=0;i<=b;i++){
if(a[i]==0){
cout<<i<<" ";
}
}
}
by __Aaaaaaaa @ 2022-09-14 19:36:43
直接输完全平方数
by WZWZWZWY @ 2022-09-14 19:40:27
第一个人将灯全部关闭,第二个人将编号为 2 的倍数的灯打开,将编号为 3 的倍数的灯做相反处理
你每个人只判断了一次if(j%c==0)
而j和c每次都会增加一。
j | c |
---|---|
1 | 2 |
2 | 3 |
3 | 4 |
4 | 5 |
显然j%c永远不可能等于0
by WZWZWZWY @ 2022-09-14 19:52:41
#include<iostream>
using namespace std;
int main(){
int b,c;
c=2;
cin>>b;
int a[b+1];
for(int i=1;i<=b;i++){//从1开始
a[i]=0;
}
for(int j=1;j<=b;j++){
for(int i = c;i<=b;i+=c)//倍数
if(a[i]==0){
a[i]=1;
}else{
a[i]=0;
}c++;//应该移到for里面
}
for(int i=1;i<=b;i++){
if(a[i]==0){
cout<<i<<" ";
}
}
}
@sjz520
by Serendi_Pity @ 2022-09-14 20:04:34
@WZRYWZWY 谢谢
by Ehtan @ 2022-10-06 20:42:04
<<#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
for(int i=1;i*i<=n;i++) cout<<i*i<<" ";
return 0;