poj3292 Semi-prime H-numbers 2012-09-05
2016-03-02 20:57
375 查看
http://poj.org/problem?id=3292
题意:H-number: 所有4的倍数加1 如 1 5 9 13.....
H-prime: 因子除了1,没有其他因子为H-number
H-semi-prime: 只能拆成两个 H-prime的乘积,方案可以有多种,但只能拆成两个。
筛法,各种筛.....
题意:H-number: 所有4的倍数加1 如 1 5 9 13.....
H-prime: 因子除了1,没有其他因子为H-number
H-semi-prime: 只能拆成两个 H-prime的乘积,方案可以有多种,但只能拆成两个。
筛法,各种筛.....
Program poj3292; const maxh=1000001 div 4+1; var h,le,lq:longint; a:array[1..maxh]of boolean; p,q:array[1..maxh]of longint; f:array[0..maxh]of longint; Procedure initprimegram; var i,j,k:longint; begin fillchar(a,sizeof(a),true); for i:=1 to maxh do if a[i] then begin inc(le); p[le]:=i; for j:=1 to maxh do begin if ((i*4+1)*(j*4+1)>(maxh+1)*4) then break; if ((i*4+1)*(j*4+1)-1) mod 4=0 then a[((i*4+1)*(j*4+1)-1) div 4]:=false; end; end; for i:=1 to maxh do if a[i]=false then begin inc(lq);q[lq]:=i;end; fillchar(a,sizeof(a),false); for i:=1 to le do for j:=i to le do begin if (int64(p[i])*4+1)*(p[j]*4+1)>(maxh+1)*4 then break; a[((p[i]*4+1)*(p[j]*4+1)-1) div 4]:=true; end; for i:=1 to lq do for j:=1 to maxh do begin if (int64(q[i])*4+1)*(j*4+1)>(maxh+1)*4 then break; a[((q[i]*4+1)*(j*4+1)-1)div 4]:=false; end; for i:=1 to maxh do begin if a[i] then f[i]:=f[i-1]+1 else f[i]:=f[i-1]; end; end; Begin assign(input,'input.in');assign(output,'output.out'); reset(input);rewrite(output); initprimegram; readln(h); while h<>0 do begin writeln(h,' ',f[h div 4]); readln(h); end; close(input);close(output); end.
相关文章推荐
- 优先级
- angular.js 中同步视图和模型数据双向绑定,$watch $digest $apply 机制
- ArrayList 、Vector 的区别
- setTimeout中this指向全局windows
- 执行环境及作用域
- File
- 操作系统笔记(一)
- lua.c:80:31: fatal error: readline/readline.h: No such file or directory
- 数论总结 2012-09-05
- poj 2891 Strange Way to Express Integers 2012-09-05
- LA 4728 对踵点对
- C语言常见单链表面试题(2)
- 混合云
- 微信公众平台开发学习记录(2)————自定义菜单创建
- sql-mode
- AppCompat v23.2 — DayNight
- POJ Optimal Milking 2012-08-28
- Mac下Eclipse内置Tomcat端口被占用问题的解决办法
- JavaScript调用webservice
- 后缀数组suffix模板