Problem25

简介:

1.package com.yao.Algorithms;  
2.  
3.import java.math.BigInteger;  
4.  
5./** 
6. *  
7. * @author shuimuqinghua77 @date 2012-4-26下午02:33:04 
8. * 
9. */  
10.public class Problem25 {  
11.public static void main(String[] args) {  
12.  
13.    /** 
14.     * 下面是运用数学上的方式来破解这个1000位数的难题 
15.     * 只需要1ms 
16.     */  
17.    /** 
18.     * 但是Fibonacci sequence还有一个重要的性质就是 
19.     * an=1/√5 [(1/2+√5/2)^ n-(1/2-√5/2)^n] 
20.     * 
21.     *  
22.     *  还有一个黄金比例的法则 
23.     *  即在较高的序列,两个连续的“斐波纳契数”的序列相互分割 
24.        将接近黄金比例(1.618:1或1:0.618)。 
25.        即 an=1.618*1/√5 [(1/2+√5/2)^ (n-1)-(1/2-√5/2)^(n-1)] 
26.        可以推出 
27.        [√5-(1-√5)/2*√5/1.618]an=(1/2+√5)^(n-1)(√5) 
28.        2边同时取以10为底的对数 
29.        lg(an)=(n-1)lg((1/2+√5))+lg√5-lg√5-(1-√5)/2*√5/1.618] 
30.        当lg(an)>=999时候 也就是an突破1000位的时候 
31.     */  
32.    long  start1=System.currentTimeMillis();  
33.    double five=Math.sqrt(5);  
34.    double   factor1=five-(1-five)/2*five/1.618;  
35.    double  factor2=five;  
36.    double factor3=0.5+five/2;  
37.    double factor4=Math.log10(factor2)-Math.log10(factor1);  
38.    for(int i=2;;i++){  
39.        double lg_an=Math.log10(factor3)*(i-1)+factor4;  
40.        if(lg_an>=999)  
41.        {  
42.            System.out.println("结果是:"+i);  
43.            break;  
44.        }  
45.              
46.    }  
47.    long  end1=System.currentTimeMillis();  
48.    System.out.println(end1-start1+"ms");  
49.      
50.    /** 
51.     * 还有一种比较挫的做法就是使用计算机使用暴力破解  785ms 
52.     */  
53.    long  start=System.currentTimeMillis();  
54.    BigInteger fn=new BigInteger("0");  
55.    BigInteger fn_1=new BigInteger("1");  
56.    BigInteger fn_2=new BigInteger("1");  
57.    int count=2;  
58.      
59.    while(fn.toString().length()!=1000){  
60.        fn=fn_1.add(fn_2);  
61.        fn_2=fn_1;  
62.        fn_1=fn;  
63.        count++;  
64.    }  
65.    System.out.println(count);  
66.    long  end=System.currentTimeMillis();  
67.    System.out.println(end-start+"ms");  
68.}  
69.  
70.}  

目录
相关文章
|
移动开发 前端开发 JavaScript
VSCode设置类似Webstorm那样可以用本地局域网IP地址访问自己开发的测试项目,vs code 前端如何以服务器模式打开?
VSCode设置类似Webstorm那样可以用本地局域网IP地址访问自己开发的测试项目,vs code 前端如何以服务器模式打开?
VSCode设置类似Webstorm那样可以用本地局域网IP地址访问自己开发的测试项目,vs code 前端如何以服务器模式打开?
|
4月前
|
数据采集 人工智能 安全
|
4月前
|
存储 JavaScript 前端开发
XSS攻击
XSS(跨站脚本攻击)利用网站对用户输入过滤不足,将恶意脚本注入页面,用户访问时执行,可窃取Cookie、数据或劫持操作。主要分反射型(通过URL注入)和存储型(存入数据库)。防御措施包括转义字符、白名单过滤富文本及使用CSP策略限制资源加载,有效降低安全风险。(238字)
|
5月前
|
存储 安全 搜索推荐
企业网站模板 网站源码下载 网站源码建站
在数字化时代,企业需专业网站拓展市场,网站源码建站因高性价比、强灵活性成中小企业首选,比定制开发成本低、比模板建站自由。选源码要明确需求、看质量售后与 SEO 扩展性,下载用官方渠道,经准备服务器域名、安装设置可上线,助企业低成本建高自由度安全网站。
2959 2
|
人工智能
RAG没有银弹!四级难度,最新综述覆盖数据集、解决方案,教你LLM+外部数据的正确使用姿势
在人工智能领域,大型语言模型(LLM)结合外部数据展现出强大能力,尤其检索增强生成(RAG)和微调技术备受关注。然而,不同专业领域的有效部署仍面临挑战,如准确检索数据、理解用户意图等。综述文章《Retrieval Augmented Generation (RAG) and Beyond》提出RAG任务分类方法,将用户查询分为四个级别,并探讨了外部数据集成的三种形式:上下文、小型模型和微调。文章提供了宝贵见解和实用指导,帮助更好地利用LLM潜力解决实际问题。论文链接:https://arxiv.org/abs/2409.14924
411 6
|
11月前
|
机器学习/深度学习 人工智能 监控
业余AI与专业AI的区别,就在这些评估指标上
如何知道你训练的AI模型是天才还是学渣?本文用轻松幽默的方式带你了解机器学习的各类评估指标,让你不仅能说出模型的好坏,还能找到改进的方向,避免在实际应用中翻车。
624 8
|
存储 NoSQL 算法
Redis内存回收
Redis 基于内存存储,性能卓越,但单节点内存不宜过大,以免影响持久化或主从同步。可通过配置 `maxmemory` 限制最大内存。内存达到上限时,Redis采用两种策略:内存过期策略和内存淘汰策略。过期策略包括惰性删除和周期删除,后者分为 SLOW 和 FAST 模式。内存淘汰策略有八种,如 LRU、LFU 和随机淘汰等,用于在内存不足时释放空间。官方推荐使用 LFU 算法。
307 2
Redis内存回收
|
存储 Oracle 安全
推荐的开源软件中小企业行业数字化场景
在数字化转型中,中小企业常遇成本、技术和安全挑战。Websoft9依托开源软件,提供自主可控的解决方案。文章以十大核心场景为例,如制造业用Odoo ERP降低成本、K3s优化产线监控;金融领域以PostgreSQL替代Oracle节省费用;医疗行业借助Nextcloud保障数据隐私;零售业通过WordPress搭建独立站减少开支等,结合真实案例解析开源技术如何驱动业务创新与增长。
416 0
|
缓存 关系型数据库 MySQL
error: Failed dependencies: mariadb-connector-c-config is obsoleted by mysql-community-server-8.0.36-1.el7.x86_64 问题解决
error: Failed dependencies: mariadb-connector-c-config is obsoleted by mysql-community-server-8.0.36-1.el7.x86_64 问题解决
1126 19
|
人工智能 算法
直接使用大模型面临的问题
【1月更文挑战第20天】直接使用大模型面临的问题
1345 4
直接使用大模型面临的问题

热门文章

最新文章

下一篇
开通oss服务