程序卡死,为什么?求助!

B2092 开关灯

Sci_8633 @ 2024-01-05 19:04:53

#include<bits/stdc++.h>
using namespace std;
int n;
bool flag[5005]={0};
int main(){
    cin>>n;
    for(int i=1;i<=n;++i)
        for(int j=i;j<=n;j*=i){
            if(flag[i]==0)  flag[i]=1;
            else if(flag[i]==1) flag[i]=0;
        }
    for(int i=1;i<=n;++i)
        if(flag[i]==1)
            cout<<i<<' ';
    return 0;
}

by zhouzihang1 @ 2024-01-05 19:10:01

@Sci_8633 当 i=1 时,j 每次乘上 i 都是 1,而又符合 j<=n 的条件,所以程序死循环。


by LoveYou3000 @ 2024-01-05 19:26:30

int j=i;j<=n;j*=i

这一层卡死了


by Sci_8633 @ 2024-01-05 20:24:51

#include<bits/stdc++.h>
using namespace std;
int n;
bool flag[5005]={0};
int main(){
    cin>>n;
    for(int i=1;i<=n;++i)
        for(int j=i;j<=n;j+=i){
            if(flag[j]==0)  flag[j]=1;
            else if(flag[j]==1) flag[j]=0;
        }
    for(int i=1;i<=n;++i)
        if(flag[i]==1)
            cout<<i<<' ';
    return 0;
}

不用发了,我早就过了。


|