什么是质数(素数)?
质数又称素数。一个大于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来统计大概运算的次数,方便和下面方法做对比。代码如下:
比如要判断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; }