まず、prime(平方根)を計算する。sqrt()はf64にする必要がある。
fn main() { let x = [1, 2, 3, 4, 5, 6, 7, 8, 9]; for i in x { let y = (i as f64).sqrt(); println!("{}", y); } }
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.29s
Running `target/debug/rust`
1
1.4142135623730951
1.7320508075688772
2
2.23606797749979
2.449489742783178
2.6457513110645907
2.8284271247461903
3
nが、2から平方根までの値で割り切れれば、素数ではない
fn main() { let x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]; for i in x { let mut flag = true; let prime = (i as f64).sqrt(); if prime >= 2.0 { for j in 2..((prime + 1.0) as u32){ if i % j == 0 { flag = false; break; } } } if flag == true { println!("{}は素数です", i);} } }
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.14s
Running `target/debug/rust`
1は素数です
2は素数です
3は素数です
5は素数です
7は素数です
11は素数です
13は素数です
floatへの変換を書かなければならない分、コードが冗長になるが、もう少しエレガントに書きたいものだ。○○か否かはTrue or Falseが書きやすい。