注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

jiyinyiyong

/chenyong/, 1991, dreamer, coder

 
 
 

日志

 
 
关于我

http://tiye.me

文章分类
网易考拉推荐

0203 平面素数,,演示图  

2011-02-03 12:46:10|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
先看图片...
2011年02月03日 - 薯条 - 薯条
 
 写了一段程序显示按照前面的规定的素数,
即是:
取所有中心在原点,'1'位置点在原网格的某个节点,且两者不重合的新网格,
忽略每个网格基准的9个节点,其余节点在原网格重合的点被挖去,
最终剩下的就是素数点.
我得到的图片,n=150,图中宽度(2*n+1)*(每个点2*2像素),
我不确定正确,
但是对比自然数素数开头的几位大致上相似,
我对比了x轴正方向前50的素数,
期望的蓝色点代表素数,正好都落在素数范围内,
除了5,13,17,29,37,41,43其余几个都满足,
原点附近的点暂不考虑.
图片比我想象中有意思,而且更紧密,
当然也可能有另一种规定说距原点(根号2)的点也要被排除,
但为了保留2作为素数我不考虑.
我猜想呐只有距远点为2的4个点,,
演示程序在titleleaf.appspot.我怀疑还是可能打不开..
可除此以外我都不会..
然后放了一个zip的备份
然后我是用javascript写的,慢得要死.
如果用c我不知道怎么作成图,
实际上看去还是一片c程序*,*!!
js部分代码抄在最后,有点怀疑出错,
因为调试老出错,
我判断循环的条件放的很宽所以运算很耗资源,
因此n过百就慢死,,
希望能改善吧以后..
大概得到思路是:
1.取n生成长款(2*n+1)的'0'值区域;
2.遍历x>0&&y>=0在n范围的点;
3.通过这些点生成数量上每个方向长度为n的网格;
4.判断若网格节点覆盖合理则标记为'1';
5.打印颜色.
开头加了个取值..就这些了.


//先进行范围的定义 var n,i,j,m,l,px,py; do { n=prompt("print","23"); n=parseInt(n); if(n<2) { alert("判断不出什么数,,我的程序很菜的.."); } } while(n<2); px=0; py=0; var p=new Array(2*n+1); for(i=0;i<2*n+1;i++) { p[i]=new Array(2*n+1); for(j=0;j<2*n+1;j++) { p[i][j]=0; } } //下面开始循环 for(i=1;i<=n;i++) { for(j=0;j<=n;j++) { if(i==1&&j==0) { continue; } for(m=-n;m<=n;m++) { for(l=-n;l<=n;l++) { px=m*i-l*j; py=m*j+l*i; if(ch(px,py)==1) { if(m*m>1||l*l>1) { p[px+n][py+n]=1; } } } } } } //打印图案 document.write("<header>"); for(i=0;i<2*n+1;i++) { for(j=0;j<2*n+1;j++) { if(i==n&&j==n) { document.write("<nav id='w'></nav>"); continue; } if(p[i][j]==1) { document.write("<nav id='r'></nav>"); } if(p[i][j]==0) { document.write("<nav id='b'></nav>"); } } document.write("</header><header>"); } //函数,检查是否在选定区域内 function ch(px,py) { if(px>n) { return 0; } if(py>n) { return 0; } if(px<-n) { return 0; } if(py<-n) { return 0; } return 1; }


----------------
改进以后的程序:
先看图:
宽度改为1px;红色改为很淡的红色:
0203 平面素数,,演示图 - 薯条 - 薯条
在m的循环中先进行判断;
n=300;
源码:

//先进行范围的定义 var n,i,j,m,l,px,py; do { n=prompt("请输入一个数字,一般不小于70,否则很耗时间..","23"); n=parseInt(n); if(n<2) { alert("判断不出什么数,,我的程序很菜的.."); } } while(n<2); px=0; py=0; var p=new Array(2*n+1); for(i=0;i<2*n+1;i++) { p[i]=new Array(2*n+1); for(j=0;j<2*n+1;j++) { p[i][j]=0; } } //下面开始循环 for(i=1;i<=n;i++) { for(j=0;j<=n;j++) { if(i==1&&j==0) { continue; } for(m=-n;m<=n;m++) { if(m*(i+j)>2*n) { continue; } if(m*(i+j)<-2*n) { continue; } if(m*(i-j)>2*n) { continue; } if(m*(i-j)<-2*n) { continue; } for(l=-n;l<=n;l++) { if(m*m<2&&l*l<2) { continue; } px=m*i-l*j; py=m*j+l*i; if(ch(px,py)==1) { p[px+n][py+n]=1; } } } } } //打印图案 document.write("<header>"); for(i=0;i<2*n+1;i++) { for(j=0;j<2*n+1;j++) { if(i==n&&j==n) { document.write("<nav id='w'></nav>"); continue; } if(p[i][j]==1) { document.write("<nav id='r'></nav>"); } if(p[i][j]==0) { document.write("<nav id='b'></nav>"); } } document.write("</header><header>"); } //函数,检查是否在选定区域内 function ch(px,py) { if(px>n) { return 0; } if(py>n) { return 0; } if(px<-n) { return 0; } if(py<-n) { return 0; } return 1; }
 
---------------------------------------
再上图片:
0203 平面素数,,演示图 - 薯条 - 薯条
 
做了一点调整:
n=360,
代码:

//先进行范围的定义 var n,i,j,m,l,px,py; do { n=prompt("请输入一个数字,一般不小于70,否则很耗时间..","23"); n=parseInt(n); if(n<2) { alert("判断不出什么数,,我的程序很菜的.."); } } while(n<2); px=0; py=0; var p=new Array(2*n+1); for(i=0;i<2*n+1;i++) { p[i]=new Array(2*n+1); for(j=0;j<2*n+1;j++) { p[i][j]=0; } } //下面开始循环 for(i=1;i<=n;i++) { for(j=0;j<=n;j++) { if(i==1&&j==0) { continue; } for(m=-n;m<=n;m++) { var s=m*(i+j); if(s>2*n) { continue; } if(s<-2*n) { continue; } for(l=-n;l<=n;l++) { px=m*i-l*j; py=m*j+l*i; if(ch(px,py)==0) { continue; } if(m*m<2&&l*l<2) { continue; } p[px+n][py+n]=1; } } } } //打印图案 document.write("<header>"); for(i=0;i<2*n+1;i++) { for(j=0;j<2*n+1;j++) { if(i==n&&j==n) { document.write("<nav id='w'></nav>"); continue; } if(p[i][j]==1) { document.write("<nav id='r'></nav>"); } if(p[i][j]==0) { document.write("<nav id='b'></nav>"); } } document.write("</header><header>"); } //函数,检查是否在选定区域内 function ch(px,py) { if(px>n) { return 0; } if(py>n) { return 0; } if(px<-n) { return 0; } if(py<-n) { return 0; } return 1; }

  评论这张
 
阅读(307)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017