Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rust 代码中隐藏的逻辑错误?_Rust - Fatal编程技术网

Rust 代码中隐藏的逻辑错误?

Rust 代码中隐藏的逻辑错误?,rust,Rust,我的目标是从中找出第一个有500个除数的三角形数。这就是我到目前为止所做的: use std::num::Float; fn main() { let mut num = vec!(1 , 3 , 6 , 10); let mut a = 0us; let mut fac = vec![]; for _ in (0us..1000000us) { let x = num[num.len() - 1] - num[num.l

我的目标是从中找出第一个有500个除数的三角形数。这就是我到目前为止所做的:

use std::num::Float;

fn main() {
    let mut num = vec!(1 , 3 , 6 , 10);
    let mut a = 0us;
    let mut fac = vec![];
    for _ in (0us..1000000us) {
        let x =
            num[num.len() - 1] - num[num.len() - 2] + 1 +
                num[num.len() -
                        1]; //extremely clever way of listing triangle numbers(not to be cocky :))
        num.push(x);
    }
    println!("{:?}" , num);
    println!("Calculating...");
    let mut _i = 1is;
    for _ in (0us..num.len() as usize) {
        for _ in (1us..(num[a] as f64).sqrt() as usize) {                                        //Logic Error
            if num[a] % _i == 0 { fac.push(_i); }
            //print!("{},\n" , res.len()); }
            _i += 1;
        }
        fac.push(num[a] as isize,);
        if fac.len() >= 10 {println!("Length: {}\nVector: {:?}\nValue: {}\n\nYOU GOT THE ANSWER! WOOT! \x07", fac.len(), fac, num[a]); break;}
        _i = 1;
        fac = vec![];
        a+=1
    }
}
但这打印的“864864000”是不正确的值,这对我来说没有意义,我尝试了
499
(因为向量本身不包括数字)和
501
502
,我得到了相同的数字


注:请不要试图让我的代码看起来更干净或提出封闭式公式,因为我正试图用我的裸脑来做这件事,现在需要一些帮助:)

最有可能的是,你的错误来自将一个非常大的整数转换为f32,然后进行比较(这会失去准确性)

最有可能的是,您的错误来自将一个非常大的整数转换为f32,然后进行比较(这将失去准确性)

最有可能的错误来自将一个非常大的整数转换为f32,然后进行比较(这将失去准确性)

最有可能的错误来自将一个非常大的整数转换为f32,然后进行比较(失去准确性)

计算除数时,不能停在数字的平方根处。最多可以停在
n/i
处,其中
n
是计算除数的数字,
i
是大于1的最小除数

例如,当计算12的除数时,您只需尝试除以1、2和3,这将使您的除数计数为4而不是6,因为它忽略了4和6。这将导致您找到的除数比实际数字少得多


这可能来自于包含被称为
fac
的除数的向量,这表明它们是因子而不是除数。

计算除数时,不能停在数字的平方根处。最多可以停在
n/i
处,其中
n
是计算除数的数字,
i
是大于1的最小除数

例如,当计算12的除数时,您只需尝试除以1、2和3,这将使您的除数计数为4而不是6,因为它忽略了4和6。这将导致您找到的除数比实际数字少得多


这可能来自于包含被称为
fac
的除数的向量,这表明它们是因子而不是除数。

计算除数时,不能停在数字的平方根处。最多可以停在
n/i
处,其中
n
是计算除数的数字,
i
是大于1的最小除数

例如,当计算12的除数时,您只需尝试除以1、2和3,这将使您的除数计数为4而不是6,因为它忽略了4和6。这将导致您找到的除数比实际数字少得多


这可能来自于包含被称为
fac
的除数的向量,这表明它们是因子而不是除数。

计算除数时,不能停在数字的平方根处。最多可以停在
n/i
处,其中
n
是计算除数的数字,
i
是大于1的最小除数

例如,当计算12的除数时,您只需尝试除以1、2和3,这将使您的除数计数为4而不是6,因为它忽略了4和6。这将导致您找到的除数比实际数字少得多


这可能来自于包含被称为fac的除数的向量,这表明它们是因子而不是除数。

取下f32的时候输出相同。取下f32的时候输出相同。取下f32的时候输出相同。取下f32的时候输出相同。我可能误解了什么,但我明白了当我运行这个时,“你得到了答案!呜!”这不意味着你的代码工作了吗?你的例子说,
864864000
不正确,但什么是正确的?我可能误解了什么,但我得到了“你得到了答案!呜!“当我运行此程序时。这不意味着你的代码工作了吗?你的示例说,
864864000
不正确,但什么是正确的?我可能误解了什么,但我得到了“你得到了答案!呜!”当我运行这个时。这不意味着你的代码工作了吗?你的例子说,
864864000
不正确,但什么是正确的?我可能误解了什么,但我得到了“你得到了答案!呜!”当我运行这个时。这不意味着你的代码工作了吗?你的例子说,
864864000
不正确,但什么是正确的?