yolobo


私信TA

用户名:yolobo

访问量:179

签 名:

等  级
排  名 63040
经  验 209
参赛次数 0
文章发表 1
年  龄 0
在职情况 学生
学  校 成都理工大学
专  业

  自我简介:

TA的其他文章

解题思路:

    常规筛,把倍数筛去

注意事项:

    i*i  而不是从2倍筛起,比如i=5,如果是两倍则在i=2的时候就已经筛去了

参考代码:

#include<bits/stdc++.h>

using namespace std;


const int N=1000;

int vis[N];

int tot[N];


bool is_prime(int x){

 for(int i=2;i*i<x;i++){

  if(x%i==0) return false;

  return true;

 }


int main(){

 int N,k=0;

 cin>>N;

 memset(vis,0,sizeof(vis));

 

 for(int i=2;i<=N;i++){

  if(vis[i]==0){

   vis[i]=1;

   if(is_prime(i)) tot[k++]=i;

  }

  for(int j=i*i;j<=N;j+=i) vis[j]=1;

 }

 

 for(int i=0;i<k;i++){

  cout<<tot[i]<<endl;

 }

}


 

0.0分

0 人评分

  评论区

  • «
  • »