问答题 给定程序MODI1.C中函数fun的功能是:找出一个大于形参m且紧随m的素数,并作为函数值返回。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! 给定源程序: #include int fun(int m) { int i, k ; for (i = m + 1 ; ; i++) { for (k = 2 ; k < i ; k++) /**************found**************/ if (i % k != 0) break ; /**************found**************/ if (k < i) return(i); } } void main() { int n ; n = fun(20) ; printf("n=%d/n", n) ; }
【正确答案】第一处:判断素数的条件是一个数i除自身或1除外不被任何数k整除的数,如果一个数i被另一个数k取模,模值等于零,那么这个不是素数并退出循环体,所以应改为if(i%k==0)。 第二处:如果i不被循环中任一个k值不整除,那么循环结束后k的值应该等于i,所以应改为if(k==i)或if(k>=i)也可以。
【答案解析】