质数,又称素数,指在一个大于1的自然数中,除了1和此整数自身外,无法被其他自然数整除的数(也可定义为包含1和本身的因子等于2个)。比1大但不是素数的数称为合数。1和0既非素数也非合数。素数在数论中有着很重要的地位。(From wikipedia)

下面提供判断一个整数是否是质数的简单C实现:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int Prime(int num)
{
    num = abs(num);
    if ((num==0)&&(num==1))  return 0;
    /*int k = num/2;*/
    int k =(int)sqrt(num);
    while((k>1)&&(num%k))
    { --k; }
    return 1==k;
}
int main()
{
    int num;
    printf("Please input an integer (Ctrl-Z to exit) : ");
    while(scanf("%d",&num))
    {
        if (Prime(num)){
            printf("\n%d is a Prime.\n",num);
        }
        else
            printf("\n%d is not a Prime.\n",num);

        printf("\nPlease input an integer (Ctrl-Z to exit) : ");
    }
}

算法逻辑: Prime函数用来判断某个整数num是否是质数,是则返回非零整数,否则返回零。 Prime函数内部,首先定义一个num的中间数k,可以是num的一半,可以是num的平方根,当然也可以是原数,这里选取平方根,因为这样做效率更高。然后拿这个数k 与 num相除,同时k递减。如果num是质数,那么k在递减的过程中都不会整除num,直到k==1 ; 而如果num不是质数,那么就会找到num的一个非1的因数。