博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU2098 分拆素数和
阅读量:6931 次
发布时间:2019-06-27

本文共 978 字,大约阅读时间需要 3 分钟。

问题链接

问题简述哥德巴赫猜想说,大于2的偶数可以分解成两个素数之和。该问题求分解个数。

问题分析解决本问题,首先用Eratosthenes筛选法求得必要的素数,然后用试探法求可分解的个数。

程序说明对于输入的偶数sum而言,如果能够分解成两个素数之和,其中一个必然小于或等于sum/2,基于这个原理进行分解计数,最后求出所有的组合。

AC的程序如下:

#include 
#include
// Eratosthenes筛选法void sieveofe(int p[], int n){ int i, j; p[0] = 0; p[1] = 0; p[2] = 1; // 初始化 for(i=3; i<=n; i++) { p[i++] = 1; p[i] = 0; } int max = sqrt(n); for(i=3; i<=max; i++){ if(p[i]) { for(j=i+i; j < n; j+=i) //进行筛选 p[j]=0; } }}#define MAX 10000int main(void){ int p[MAX+1]; int sum, count, i; sieveofe(p, MAX); for(;;) { scanf("%d", &sum); if(sum == 0) break; count = 0; for(i=2; i<=sum / 2; i++) { if(p[i] && p[sum-i]) if(i != sum-i) count++; } printf("%d\n", count); } return 0;}

转载于:https://www.cnblogs.com/tigerisland/p/7564905.html

你可能感兴趣的文章
《信息可视化:交互设计(原书第2版)》——2.8节多属性
查看>>
《SQL初学者指南(第2版)》——1.7 SQL的重要性
查看>>
小程序总结
查看>>
Android控件Gridview实现多个menu模块,可添加可删除
查看>>
我的友情链接
查看>>
Redis持久化实践及灾难恢复模拟
查看>>
SharedPreferences详解
查看>>
android 获取进程、服务、任务列表
查看>>
二叉树的遍历
查看>>
Script:收集自动SGA内存管理ASMM诊断信息
查看>>
2012年3月美国最佳虚拟主机提供商TOP12性能评测
查看>>
0-999以内的水仙花数
查看>>
基础之简单命令_1
查看>>
离线部署ELK+kafka日志管理系统
查看>>
所有windows系统快速建立用户解读
查看>>
我的友情链接
查看>>
通过signall.SIGKILL在指定位置结束正在执行的进程
查看>>
Jmeter是什么?
查看>>
MHA环境搭建及配置使用
查看>>
nginx+lua+redis实现GET请求接口之黑名单(二)
查看>>