M092

02-程序修改题 软件154 范金瑞 1023浏览

所属年份:2010.9;2012.3

下列给定程序中,函数fun的功能是:找出一个大于给定整数m且紧随m的素数,并作为函数值返回。

请改正程序中的错误,使它能得出正确的结果。
注意:部分源程序在文件MODI1.C中,不要改动main函数,不得增行或删行,也不得更改程序的结构!

#include  <stdlib.h>
#include  <conio.h>
#include  <stdio.h>
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;
    system("CLS");
    printf("\nPlease enter n: ");
    scanf("%d",&n);
    printf ("%d\n",fun(n));
}

【参考答案】

 (1)if(i%k==0) 
(2)if(k==i)

【解题思路】
(1)判断当前数是否为素数,若存在一个数(除1和其自身)能整除当前数,则跳出本次循环,所以if条件应为i%k==0。

(2)如果i是素数,则循环结束时k==i,将该值返回。