SD2441856574 @ 2023-10-18 19:32:29
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
int A[5001];
int n;
int main(){
cin >> n;
//初始把灯全打开
for(int i = 1;i <= n;i++)A[i] = 1;
//第一层循环:第i个人进行开关灯
//第二层循环:从1到n进行检索满足倍数关系:进行开关灯
for(int i = 1;i <= n;i++) {
for(int j = 1;j <= n;j++){
if(j%i==0) A[i] = (-1)*A[i];
}
}
for(int i = 1;i <= n; i++) {
if (A[i] == -1) cout << i << " ";
}
return 0;
}
by Kazeno_Akina @ 2023-10-18 19:46:27
把 A[i]=(-1)*A[i]
改成 A[j]=(-1)*A[j]
就可以了。
by _jiuye_ @ 2023-11-08 21:36:35
你这有点麻烦(脑瓜子上),给你看下我的
#include<bits/stdc++.h>
using namespace std;
bool a[1000000];
int main()
{
int n,s=0;
cin>>n;
for(int i=2;i<=n;i++)
{
for(int j=i;j<=n;j+=i)
{
a[j]=!a[j];
}
}
for(int i=1;i<=n;i++)
if(a[i]==0)
cout<<i<<" ";
}