南开百题--题目1_素数判断

请编写一个函数jsValue(int m,int k,int xx[]),该函数的功能是:将大于整数m且紧靠m的k个素数存入数组xx传回。

    最后调用函数writeDat()读取10组数据,分别得出结果且把结果输出到文件out.dat中。

    部分源程序存在文件prog1.c中。

    例如:若输入17 5 则应输出:19,23,29,31,37。

    请勿改动主函数main()和写函数writeDat()的内容。


解题思路:

本题属于素数题。素数又称质数,是指:在一个大于1的自然数中,除了1和自身,不能被其他自然数整除。 1不是素数。

检查一个整数是否为素数,最简单的的方法就是试除法,将该数n用于小于等于根号n的所有素数去试除,如果均无法整除,则N为素数。


// 判断m是否为素数。 是返回1 否返回0

int isP(int m)

{

    int i;

    // i赋值为2,从2开始循环试除,i循环到大于m时终止

    for(i = 2; i < m; i++)

        if(m % i == 0)

            return 0;

    return 1;

}


/* 本题要求是将大于整数m且紧靠mk个素数存入数组xx传回,有了素数判断函数,

只需要一个循环,判断比m大的k个素数即可。*/

void num(int m, int k, int xx[])

{

    int s = 0;

    for (m = m + 1; k > 0; m++) {

        if(isP(m)) {xx[s++] = m; k--;}

    }

}


你可能感兴趣的:(南开百题--题目1_素数判断)