use std::i32;
pub fn is_div(n1:i32,n2:i32)->bool{
if n1%n2==0 {
return true;
}
else{
return false;
}
}
pub fn is_prime_number(num:i32)->bool{
let y1=num as f32;
let y2=y1.sqrt() as i32+1;
let mut is_prime=true;
for x in 2..y2 {
if is_div(num,x){
is_prime=false;
break;
}
}
is_prime
}
pub fn search_prime_base_number(num:i32)->Vec<i32>{
let mut prime_nums=Vec::new();
let x1=num as f32;
let x2=x1.sqrt() as i32+1;
for x in 2..x2 {
if is_prime_number(x){
prime_nums.push(x);
}
}
prime_nums
}
pub fn main() {
let n=2000;
let prime_base_nums=search_prime_base_number(n);
let mut prime_nums: Vec<i32>=Vec::new();
for x in &prime_base_nums{
prime_nums.push(*x);
}
for x in (n as f64).sqrt() as i32 +1 ..n {
let mut is_prime=true;
for i in &prime_base_nums{
if x%i ==0{
is_prime=false;
break;
}
}
if is_prime {
prime_nums.push(x);
}
}
for x in prime_nums{
print!("{} ",x);
}
}