这段代码试图统计从2到N之间每个数字能被2到9中哪些数字整除的次数,但逻辑有误。 代码中,对于每个num,遍历i从2到9,检查num是否能被i整除。但这里i同时被用作数字本身和数组索引,而arr[i]记录的是“num能被i整除”的次数。实际上,对于每个num,如果它能被多个i整除,arr[i]会分别增加,这导致统计的是“整除事件”的次数,而不是每个数字被整除的次数。 - 你的循环结构是:对每个num,检查它是否能被每个i整除,如果能,就增加arr[i]。这相当于统计了所有num中,能被2整除的次数、能被3整除的次数……但题目可能要求的是统计每个num能被多少个数字整除,或者统计每个数字作为因数出现的次数?你需要明确题目意图。 - 注意数组arr的大小是10,但你只用了索引2到9,索引0和1未被使用,这没问题。但你的循环中i从2到9,而digit=i,这个digit变量是多余的,直接使用i即可。 - 关键问题:你的代码没有区分“每个num”的统计。如果你想要统计每个num能被多少个数字整除,那么应该对每个num单独计数,而不是对所有num累加。目前你的arr[i]是全局累加,不是针对每个num的。