我有一个程序,对于所有小于或等于输入的整数,找到可以表示为两个立方之和的数字,两次,又名拉马努金数字问题。
我用 Java 和 Rust 编写了这个,但是,它在 Rust 中的运行速度比 Java 慢两倍多。
我能做些什么来让它表现得更好,或者以其他方式改进它吗?
铁锈代码:
use num_integer::Roots;
fn main() {
let v = 984067;
// let v = 87539319;
for i in 1..=v {
ramanujan(i)
}
}
fn ramanujan(m: i32) {
let maxcube = m.cbrt();
let mut res1 = 0;
let mut res2 = 0;
let mut _res3 = 0;
let mut _res4 = 0;
for i in 1..=maxcube {
for j in 1..=maxcube {
if i * i * i + j …Run Code Online (Sandbox Code Playgroud)