大佬们看一看这道题怎么做
vb吧
全部回复
仅看楼主
level 4
不方不圆 楼主
2023年01月20日 09点01分 1
level 15
这题乍一看是判断素数的算法,实际上这个算法很有问题[滑稽]
如果把i Mod j<>0改成i Mod j=0,把j<=k改成j>k,那就是判断i是不是素数了(准确来说,用j>k是筛选素数,j<=k是筛选合数)
现在这样,如果从2到i的平方根范围内有一个数不是i的约数,那么就会退出循环,后面的判断条件是j<=k,也就是筛选“中途退出循环”的数
具体来看每个数:
对于3,2大于3的平方根,直接跳过循环,也不满足后面的j<=k,因此3不符合条件;
对于4~8,只判断一个2,也就是所有的奇数(5和7)符合条件,偶数不符合条件;
对于9,判断2和3,9是奇数,不是2的倍数,因此符合条件
所以最后计算的是5+7+9的值,即21
2023年01月20日 11点01分 2
我打到vb里,得出的结果是32,给我弄懵了
2023年01月20日 14点01分
@不方不圆 好吧,我发现我的分析忽略了一件事,就是k的类型是Integer,这样k的值就不是i的平方根了,而是还要四舍五入取整,这么一来,3~6都需要判断2,7~9都需要判断2和3,然后符合条件的数就应该是3、5、7、8、9,加起来是32
2023年01月20日 16点01分
@初音✨七奈 懂了懂了,蟹蟹大佬,新年快乐[太开心]
2023年01月21日 11点01分
level 1
这一类题目如果你有vb根本就不用问,输入代码后测试运行,然后右键顶部菜单栏可以调出"调试"命令栏,打开监视窗口,输入你需要检测的几个值(su、k、i、j),如果有必要可以输入检测的表达式(sqr(i)、i Mod j),然后按F8逐行运行一遍就懂了。
2023年01月22日 12点01分 3
level 8
vb吧祝您好运亨通
2023年01月23日 00点01分 4
1