什么是质数(素数)?

质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数(规定1既不是质数也不是合数)。———来自百度百科

暴力解决

我们设定一个数为x,根据质数的定义判断x是否为质数,我们看它能否被2、3、4······、x-1整除,如果它不能被其中任何一个整数整除,则这个数就是质数。
比如要判断11是不是质数,我们就看能否被下面这10个数整除。
2、3、4、5、6、7、8、9、10
因为11无法被其中任何一个数整除,则判断它为质数。

如果我们要找1—1000内的质数,我们可以控制x从2自己增到1000,并且x每次自增1过后,都要从2开始找能否被x所整除的数,直到找不到结束。所以我们可以用两层for循环来控制,第一层来控制x产生2–1000数字,第二层for循环产生2到x-1的数,并且判断能否被整除。(因为1不是质数,把1排除在外)

并且我还设置了一个计数器count来统计大概运算的次数,方便和下面方法做对比。代码如下:


//求1--1000内的质数(素数)
#include <stdio.h>
int main()
{
    int x = 0;   
    int i = 0;
    unsigned int count = 0;  //统计运算的次数
    for (x = 2; x < 1000; x++)    //在2到1000之间找质数
    {
        for (i = 2; i < x; i++)   //试除法,能不能被x整除,从2开始找,直到等于x
        {
            count++;
            if (x % i == 0)   //找到能被x整除的数了
            {
                break;
            }
        }
        if (x == i)   //找到和x相等也没有被整除的,证明是质数
        {
            printf("%d ",x);
        }
    }
    printf("\n\n\n");
    printf("运算的次数:%d ",count);
    return 0;
}