HDU 2098 分拆素数和
来源:互联网 发布:王者荣耀战绩数据分析 编辑:程序博客网 时间:2024/06/03 17:49
Problem Description
把一个偶数拆成两个不同素数的和,有几种拆法呢?
Input
输入包含一些正的偶数,其值不会超过10000,个数不会超过500,若遇0,则结束。
Output
对应每个偶数,输出其拆成不同素数的个数,每个结果占一行。
Sample Input
30260
Sample Output
32#include<stdio.h>int main(){int n,i,j,s,a[10000];for(i=3;i<=10000;i++)a[i]=i;for(i=2;i<=10000;i++)for(j=2*i;j<=10000;j+=i)a[j]=0;while(scanf("%d",&n)!=EOF&&n){s=0;for(i=3;2*i<n;i++)if(a[i]+a[n-i]==n)++s;printf("%d\n",s);}return 0;}
自然的做法:
#include <stdio.h>#include <math.h>int IsPrime(int n){ int i; for (i=2; i<=sqrt(n); i++) { if (n % i == 0) return 0; } return 1;}int main(){ int n, i, cnt; while (scanf("%d", &n) && n) { cnt = 0; for (i=3; i<n/2; i+=2)//一定要从3开始,2是素数表中唯一的偶数。直接加2避免偶数进入判断 {//因为是不同的两个素数,那必定一个比n/2大,一个比n/2小 if (IsPrime(i) && IsPrime(n-i)) cnt++; } printf("%d\n", cnt); } return 0;}
0 0
- HDU 2098 分拆素数和(素数)
- HDU 2098 分拆素数和
- HDU 2098 分拆素数和
- HDU 2098 - 分拆素数和
- HDU 2098 分拆素数和
- hdu 2098 分拆素数和
- Hdu 2098 分拆素数和
- HDU 2098 分拆素数和
- HDU 2098 分拆素数和
- hdu-2098-分拆素数和。。。
- HDU 2098 分拆素数和
- HDU 2098 分拆素数和
- hdu 2098 分拆素数和
- hdu 2098 分拆素数和 水题
- HDU 2098 分拆素数和
- hdu 2098 分拆素数和
- hdu 2098 分拆素数和
- HDU 2098 分拆素数和
- spring注入学习及注解
- Shell基础编程 变量和运算符
- 第六讲 应用程序的退出
- Java并发编程之线程管理(基本线程同步4)
- redis的安装
- HDU 2098 分拆素数和
- 十进制转N进制
- Opencv2 基础操作
- 快速排序一种易于理解的方式实现
- 第七讲 MFC的DLL
- 基本结构的数组 NSArry NSMutableArray
- Cocos2dx3.0 rc 导入cocosStudio1.3.0.0示例场景
- 【计算机网络常见面试题】利用IP地址和子网掩码求网络号和主机号
- Hive.WHERE子句的“陷阱”