C/C++编程学习 |
您所在的位置:网站首页 › 素数和质数叫法来由 › C/C++编程学习 |
题目链接 题目描述给定 2 个整数 a, b 求出它们之间包括(a, b)的所有质数的和。 输入格式 两个整数 a, b (1 ≤ a, b ≤ 105)。 输出格式 一个整数,表示范围内的质数和。 Sample Input 999 10 Sample Output 76110 思路先判断一个数是否为质数,然后将质数求和。 那么如何判断一个数是否为质数呢? 方法①:从 2 到 n 循环一遍,看看有没有能除尽 n 的,如果有, 那这个数不是质数,如果没有,那么这个数是质数。 方法②:从 2 到 √n 循环一遍,看看有没有能除尽 n 的,如果有, 那这个数不是质数,如果没有,那么这个数是质数。也就是方法①的进化版,这个算法可以缩短程序的运行时间,降低时间复杂度。 方法③:线性筛。思想是:从 2 开始,因为 2 的倍数一定不是素数,所以先把2的倍数全部删去;接着找下一个素数3,把3的倍数全部删去;因为4是2的倍数,已经被删去,所以直接找下一个素数5,把5的倍数全部删去;接着7的倍数,11的倍数,…直到把某个范围内的合数全部筛选出去,剩下的即为素数。 方法④:六倍原理。可以从数学上证明,大于6的质数都是在6 的倍数的左右两边。 C语言代码: #include #include int isprime(int x) { if(x > y) { if(x == 0 && y == 0) break; int flag = 0; for(int i = x; i |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |