质数的和(多种方案)
来源:互联网 发布:电脑办公软件分类 编辑:程序博客网 时间:2024/05/21 19:30
求某个范围内质数的和,例如输入100,则求出小于100的质数和。
PS:下面的三种方法会逐步缩小遍历查找的范围
方法1:
#include<stdio.h>int IsPrime(int n){//判断n是否为质数,如果是返回1,否则返回0 int i; for (i = 2; i < n; i++)//这个地方的遍历范围是【2,n】,在方法2中会缩小遍历范围 { if (n % i == 0) return 0; } return 1;}int main(){ int i, nUpLimit, sum = 0; printf("输入一个正整数,下面将求出这个范围内的质数和: "); scanf_s("%d", &nUpLimit); for (i = 2; i <= nUpLimit; i++) { if (IsPrime(i)) sum += i; } printf("sum=%d\n", sum); return 0;}
方法2:
#include<stdio.h>int IsPrime(int n){//判断n是否为质数,如果是返回1,否则返回0 int i; for (i = 2; i <= n / 2; i++)//这个地方的遍历范围是【2,n / 2】,在方法3中会进一步缩小遍历范围 { if (n % i == 0) return 0; } return 1;}int main(){ int i, nUpLimit, sum = 0; printf("输入一个正整数,下面将求出这个范围内的质数和: "); scanf_s("%d", &nUpLimit); for (i = 2; i <= nUpLimit; i++) { if (IsPrime(i)) sum += i; } printf("sum=%d\n", sum); return 0;}
方法3:
#include<stdio.h>int IsPrime(int n){//判断n是否为质数,如果是返回1,否则返回0 int i; for (i = 2; i * i <= n; i++)//这个地方的遍历范围是【2,sqrt(n)】,这里不想用开根号,所以改成了i * i <= n { if (n % i == 0) return 0; } return 1;}int main(){ int i, nUpLimit, sum = 0; printf("输入一个正整数,下面将求出这个范围内的质数和: "); scanf_s("%d", &nUpLimit); for (i = 2; i <= nUpLimit; i++) { if (IsPrime(i)) sum += i; } printf("sum=%d\n", sum); return 0;}
方法4:
通过筛选法,排除所有非素数,并做好标记。
参考代码:
#include <stdio.h>#include <malloc.h>void FilterPrimer(char* pIsPrime, int n){//使用筛选法过滤掉不是质数的,这种是求某个范围内所有质数最快的方法,时间复杂度均摊是线性的 int i, j; for (i = 2; i <= n; i++) pIsPrime[i] = 1;//先假定所有的数都是质数 for (i = 2; i <= n; i++) { if (pIsPrime[i]) {//如果某个数是质数,则把它的倍数全部过滤掉 for (j = 2; j * i <= n; j++) pIsPrime[j * i] = 0; } }}int main(){ int i, n, sum = 0; printf("输入求和的最大项数: "); scanf_s("%d", &n); char *pIsPrime = (char*)malloc((n + 1) * sizeof(char)); FilterPrimer(pIsPrime, n); for (i = 2; i <= n; i++) { if (pIsPrime[i]) { sum += i; } } printf("sum=%d\n", sum); return 0;}
运行结果:
3 0
- 质数的和(多种方案)
- 质数(或素数)(多种方法)
- leetcode练习(204) 多种方法求质数 python实现
- 从1到100以内的偶数和质数之和(质数和有误)
- 基于S3c2440的多种显示屏测试方案
- winform上传文件的多种方案解析
- 绩效工资分配的多种方案
- 图片水平、垂直居中的多种方案
- 高效的SQLSERVER分页查询(多种方案)
- Hadoop MapReduce Job 提交的多种方案
- css清除浮动的多种方案
- 质数的和与积
- 100以内的质数及100以内质数的和
- 输出平行四边形图案(多种方案)
- zendstudio 实现多种配色方案(sublime)
- python实现100以内的质数和非质数
- 打印1-100之间的所有的质数、质数的个数以及所有质数的和
- 特殊的质数(nefu1151)
- UML九种图之用例图
- LeetCode Algorithms 128. Longest Consecutive Sequence 题解
- 按键扫描与状态机结合
- JavaScript生成指定范围随机数和随机序列
- [FPGA]如何使用SignalTap观察wire与reg值
- 质数的和(多种方案)
- Ubuntu进行mysql集群
- softmax、GLM
- MyEclipse快捷编辑技巧
- JavaScript之数组
- Caused by: There is no result type defined for type 'json' mapped with name 'success'. Did you mean
- 树莓派更换国内源
- java基础——数据类型,变量,运算符,字符串,输入输出,数组,大数值
- 438. Find All Anagrams in a String