我想问你一些事情,我不明白为什么它的工作。我需要做一个代码,你输入一些数字,它给你所有的素数,直到你得到的数字。
现在我有了这个代码,就像每一个不是素数的数字,它会去下一个n,然后检查它,但我不明白,如果它得到4,然后把它变成5,j不会去3,然后你开始检查5/3,但你错过了除以2,等等,就像我不明白,它会重置j为2,每次i edd i+1?
此外,如果我给予它像10,它打印11,我不希望它通过原来的数字,我怎么做。
整数;
printf("please enter num ");
scanf_s("%d", &num);
int i, j;
for (i = 2; i < num; i++)
{
for (j = 2; j < i; j++)
{
printf("j=%d ", j);
if (i % j == 0)
i += 1;
}
printf("%d ", i);
}
2条答案
按热度按时间c86crjj01#
1.对于不同的
num
,“执行此技巧的代码”失败。转到下一个i
(if (i % j == 0) i += 1;
)失败,因为代码需要使用新的i
再次针对较小的j
进行测试。建议形成helper function。hgqdbh6s2#
现在我有了这个代码
不,算法是错误的。
这是
**输入值为30时,**将给予输出
但27不是质数
该算法处理的其他一些值不正确:三十五、八十七、九十五