Project Euler解题汇总 041 ~ 050

[url=http://projecteuler.net/index.php?section=problems&id=41]问题41[/url]: 解答见[url=http://eastsun.iteye.com/blog/207614]按字典顺序生成所有的排列[/url],此处不再重复。


[url=http://projecteuler.net/index.php?section=problems&id=42]问题42[/url]:How many triangle words does the list of common English words contain?
[color=red]答  案[/color]:162
import java.util.Scanner  
import java.io.File
import scala.Math.sqrt

object Euler042 extends Application {
var scan = new Scanner(new File("words.txt")).useDelimiter("\"(,\")?")
var res = 0
while(scan.hasNext()){
var word = scan.next()
var vle = word.foldLeft(0){ _+_-'A'+1 }
var idx = sqrt(2*vle)
if(idx*(idx+1) == 2*vle) res += 1
}
scan.close()
println(res)
}



[url=http://projecteuler.net/index.php?section=problems&id=43]问题43[/url]:Find the sum of all pandigital numbers with an unusual sub-string divisibility property.
[color=red]题目简介[/color]:数字1406357289具有以下性质:
  1.它是0~9的一个排列
  2.记di为它的第i为数字(从左至右,i从1开始),则:
     * d2d3d4=406 is divisible by 2
     * d3d4d5=063 is divisible by 3
     * d4d5d6=635 is divisible by 5
     * d5d6d7=357 is divisible by 7
     * d6d7d8=572 is divisible by 11
     * d7d8d9=728 is divisible by 13
     * d8d9d10=289 is divisible by 17
  求所有具有上述性质的数字之和。
[color=red]答  案[/color]:16695334890
import eastsun.math.Util._

object Euler043 extends Application {
val ps =Array(2,3,5,7,11,13,17)
def suit(arr:Array[Int]):Boolean = {
var num = arr.slice(0,3).foldLeft(0){ _*10+_ }
for(idx <- 3 until arr.length){
num =num%100*10 + arr(idx)
if(num % ps(idx-3) != 0) return false
}
true
}
var arr = Array(0,1,2,3,4,5,6,7,8,9)
var sum = 0L
do{
if(suit(arr)) sum += arr.foldLeft(0L){ _*10+_ }
}while(nextPermutation(arr))
println(sum)
}



[url=http://projecteuler.net/index.php?section=problems&id=44]问题44[/url]:Find the smallest pair of pentagonal numbers whose sum and difference is pentagonal.
[color=red]题目简介[/color]:由公式[color=orange]Pn=n(3n1)/2[/color]生成的数称为五角数,前10个五角数依次为:
    1, 5, 12, 22, 35, 51, 70, 92, 117, 145, ...
  易见,[color=orange]P4 + P7 = 22 + 70 = 92 = P8[/color]。但他们的差[color=orange]P7-P4=70-22 =48[/color]不是一个五角数。
  现在要求两个五角数Pj与Pk使得他们的和与差(绝对值)都是五角数,并且使得他们差的绝对值[color=orange]D = |Pj-Pk|[/color] 最小。输出D的值。
[color=red]答  案[/color]:5482660
object Euler044 extends Application {
def isPenta(n:Int):Boolean = {
val v = 6*n
val s = Math.sqrt(v)
s%3 == 2 && s*(s+1) == v
}
def penta(n:Int) = n*(3*n-1)/2

var res = 0
var k = 1
while(res == 0){
val pk = penta(k)
var j = 1
while(j < k && res == 0){
val pj = penta(j)
if(isPenta(pk+pj) && isPenta(pk-pj)) res = pk - pj
j += 1
}
k += 1
}
println(res)
}



[url=http://projecteuler.net/index.php?section=problems&id=45]问题45[/url]:After 40755, what is the next triangle number that is also pentagonal and hexagonal?
[color=red]题目简介[/color]:三角数,五角数,六角数的生成公式如下:
[color=orange]  Triangle   Tn=n(n+1)/2   1, 3, 6, 10, 15, ...
  Pentagonal  Pn=n(3n-1)/2   1, 5, 12, 22, 35, ...
  Hexagonal   Hn=n(2n-1)    1, 6, 15, 28, 45, ...[/color]
  可以验证,T285 = P165 = H143 = 40755
  求下一个既是三角数又是五角数与六角数的数字。
[color=red]题目分析[/color]:易见,六角数一定是三角数,因此只需寻找下一个是五角数的六角数即可。
[color=red]答  案[/color]:1533776805
//Scala
Stream.from(144).map{ n => n*(2*(n:Long)-1) }.find{ v =>
var sq = Math.sqrt(6*v).toLong
(sq+1)%3 == 0 && sq*(sq+1) == 6*v
}.get



[url=http://projecteuler.net/index.php?section=problems&id=46]问题46[/url]:What is the smallest odd composite that cannot be written as the sum of a prime and twice a square?
[color=red]题目简介[/color]:Christian Goldbach提出过一个猜想:
  [color=orange]任意一个奇合数都能写成一个平方数的两倍与一个素数之和。如:[/color]
[color=olive]   9 = 7 + 2×1^2
   15 = 7 + 2×2^2
   21 = 3 + 2×3^2
   25 = 7 + 2×3^2
   27 = 19 + 2×2^2
   33 = 31 + 2×1^2[/color]
  但后来发现这个猜想是错误的。现在要求不满足上面猜想的最小的那个奇合数。
[color=red]答  案[/color]:5777
object Euler046 extends Application {
var ps:Stream[Int] = Stream.cons(2,
Stream.from(3).filter{ n =>
ps.takeWhile(p => p*p <= n).forall(n%_ !=0)
})
def isPrime(n:Int) = ps.takeWhile{ p => p*p<=n }.forall{ n%_ !=0 }
var res = 3
var end = false
do{
do{
res += 2
}while(isPrime(res))
val sq = Math.sqrt((res-2)/2)
end = 1.to(sq).forall{ n => !isPrime(res-2*n*n) }
}while(!end)
println(res)
}



[url=http://projecteuler.net/index.php?section=problems&id=47]问题47[/url]:Find the first four consecutive integers to have four distinct primes factors.
[color=red]题目简介[/color]:对于自然数n,记f(n)为满足下列条件的最小的那个数:f(n),f(n)+1,...,f(n)+n-1这连续n个数,每个数恰好有n个不同的素因子。
[color=olive]  比如:
    f(2) = 14,  
      14 = 2 ×7
      15 = 3 ×5
    f(3) = 644
      644 = 2² ×7× 23
      645 = 3× 5× 43
      646 = 2× 17× 19[/color]
  现在要求f(4)
[color=red]答  案[/color]:134043
import java.util.ArrayList

object Euler047 extends Application {
val ps:Stream[Int] = Stream.cons(2,
Stream.from(3).filter{ n =>
ps.takeWhile(p => p*p <= n).forall(n%_ !=0)
})
def f(size:Int):Int = {
var buf = new ArrayList[Int]
buf.add(0)
buf.add(0)
var num = 2
var cnt = 0
while(cnt < size){
var copy = num
var first = ps.find{ copy%_ == 0 }.get
while(copy % first == 0) copy = copy/first
var vau = buf.get(copy)+1
buf.add(vau)
if(vau == size) cnt += 1
else cnt = 0
num += 1
}
num - size
}
println(f(4))
}



[url=http://projecteuler.net/index.php?section=problems&id=48]问题48[/url]:Find the last ten digits of 1^1 + 2^2 + ... + 1000^1000.
[color=red]题目简介[/color]:求1^1 + 2^2 + ... + 1000^1000末尾10位数字。
[color=red]答  案[/color]:9110846700
//Scala
val MAX = 10000000000L
def pow(n:Int):Long = 1.to(n).foldLeft(1L){ (p,i) => p*n%MAX }
1.to(1000).foldLeft(0L){ (s,i) => (s+pow(i))%MAX }



[url=http://projecteuler.net/index.php?section=problems&id=49]问题49[/url]:
Find arithmetic sequences, made of prime terms, whose four digits are permutations of each other.
[color=red]题目简介[/color]:数1487, 4817, 8147有以下性质:
  1.它们都是素数
  2.这三个数成等差数列
  3.除了位置不同,组成它们的数字一样。
求出四位数中满足上述条件的另三个数,按从小到大连着输出。
[color=red]答  案[/color]:296962999629
import java.util.Arrays.{ binarySearch => find}
object Euler049 extends Application {
val ps:Stream[Int] = Stream.cons(2,
Stream.from(3).filter{ n =>
ps.takeWhile(p => p*p <= n).forall(n%_ !=0)
})
val pa = ps.takeWhile{ _<10000 }.dropWhile{ _<=1487 }.toArray

def suit(a:Int,b:Int):Boolean = {
var buf =new Array[Int](10)
var tmp = a
while(tmp != 0){
buf(tmp%10) += 1
tmp = tmp/10
}
tmp = b
while(tmp != 0){
buf(tmp%10) -= 1
tmp = tmp/10
}
buf.forall{ _==0 }
}
var i = 0
var res = ""
while(res == "" && i < pa.length){
var j = i+2
while(res == "" && j < pa.length){
var mid = (pa(i)+pa(j))/2
if(find(pa,i,j,mid) >= 0 &&
suit(pa(i),pa(j)) &&
suit(pa(i),mid) ) res = ""+pa(i)+pa(j)
j += 1
}
i += 1
}
println(res)
}



[url=http://projecteuler.net/index.php?section=problems&id=50]问题50[/url]:
Which prime, below one-million, can be written as the sum of the most consecutive primes?
[color=red]题目简介[/color]:素数41能写成连续6个素数之和:
    41 = 2 + 3 + 5 + 7 + 11 + 13
  现在要求1,000,000以内的素数,能表示为最多的连续素数之和的那个数。
[color=red]题目分析[/color]:我这儿采取的是类似“迭代加深搜索”的算法:首先对“连续素数”的个数做一个上界估计,记为len。然后看1000000以内有没有len个连续素数其和也为素数,并且在1000000以内。如果有,这这个和就是解;否则,将len减1,继续上述操作。
[color=red]答  案[/color]:997651
import java.util.Arrays.{binarySearch => indexOf}
import java.util.BitSet
import scala.collection.jcl.LinkedList

object Euler050 extends Application{
//var start = System.currentTimeMillis
/**
get all primes below bound
Sieve of Eratosthenes
*/
def getPrimes(bound:Int):Array[Int] = {
if(bound <= 2) return Array()
var set = new BitSet(bound)
var idx = 2
var lst = new LinkedList[Int]
lst.add(2)
while(idx < bound){
var sp = lst.last
var st = sp*2
while(st <= bound){
set.set(st)
st += sp
}
st = sp+1
while(st < bound && set.get(st)) st += 1
if(st < bound) lst.add(st)
idx = st
}
lst.toArray
}

val primes = getPrimes(1000000)
val last = primes(primes.length-1)

var len = primes.length/100
var res = 0

do{
var start = 0
var sum = start.until(start+len).foldLeft(0L){(s,i) => s+primes(i) }
var idx = indexOf(primes,start+len,primes.length,sum.toInt)
if(idx >= 0) res = sum.toInt

while(start+len < primes.length && sum <= last && res ==0){
sum = sum +primes(start+len)-primes(start)
idx = indexOf(primes,start+len,primes.length,sum.toInt)
if(idx >= 0) res = sum.toInt
start += 1
}
len -= 1
}while(res == 0)

//var end = System.currentTimeMillis

println(res)
//println("Use time(ms): "+(end-start))
}
ProjectEuler题解(更新到100题) 欧拉项目题解,源代码从Github上下载:https://github.com/cloudzfy/euler Multiples of 3 and 5Even Fibonacci numbersLargest prime factorLargest palindrome productSmallest multipleSum square difference10 阅读详情

相关推荐

projecteuler-solutions:所有700多个Euler项目问题​​的数值答案

警告-此网站包含剧透。 如果您想自己解决问题,请立即关闭此页面。 解决方案: : 论坛: : 维护者: 什么是欧拉计划? 欧拉计画( )是一系列具有挑战性的数学/计算机编程问题,需要解决的不仅仅是数学方面的知识。 尽管数学将帮助您找到优雅而有效的方法,但仍需要使用计算机和编程技巧来解决大多数问题。 什么是projecteuler解决方案? 顾名思义,projecteuler-solutions是站点Project Euler的解决方案的集合。 该站点旨在为Euler项目提供完整而准确的解决方案清单。 这个网站的目的是什么? 在一个棘手的问题上奋斗了数小时或数天之后,您最终可能会放弃(毕竟,如果人们从不放弃一个问题,世界将是一个陌生的地方)。 此时,您有两个选择: 没有解决方案,您会感到沮丧。 您会感觉到您的所有努力似乎都是徒劳的。 没有办法检查正确的答案,您不知道距解

project euler 解题

project euler 3:Any integer greater than 1 is either a prime number, or can be written as a unique product of prime numbers (ignoring the order). 每一个数都能表示成质数的乘积。 const long numm = 600851475143; lo

cctvzxxz1的专栏 5928

ProjectEuler 解题表格

NULL 博文链接:https://linuke.iteye.com/blog/1056283

ProjectEuler(欧拉计划)系列题解目录【持续更新中】

ProjectEuler(欧拉计划)介绍 题目来源:51Nod-ProjectEuler ProjectEuler 1(2171) 题解 ProjectEuler 2(2174) 题解 ProjectEuler 3(2176) 题解

东瓜blog 1217

ProjectEuler:我的欧拉计划答案

欧拉计划 我的欧拉计划答案

project-euler:Project Euler 问题的解决方案(主要使用 Java)

#Project Euler 解决方案 一些问题的解决方案。 大多数解决方案都是用Java编写的。

欧拉计划(project euler)最详细中文题解

欧拉计划是一个在线解题网站,题目以各类数学问题为主,通常需要结合一定的数学与编程知识,写出适当的程序求解问题(详细介绍可以参见我的文章)。相比于力扣等刷题网站,欧拉计划上的题目有着更丰富的知识背景,在解答题目的过程中常能学习新的数学与算法知识,享受解题愉悦的同时也能颇有收获。 在我的解题过程中,我尽量追求对每道题给出最优的解法,然后写文章把我的思路与代码记录下来。在每篇文章中,我首先将题目翻译成了中文,然后给出了我的解题思路和对应的代码,代码可以在这个仓库中找到。希望这些文章能够为大家带来启发,发现更好的

metaquant的博客 6998

Project-Euler-solutions-java:我的Java项目Euler解决方案

项目欧拉 我的Java项目Euler解决方案。 提示:如果仅从我的解决方案中复制内容,这将无助于您学习,因此,如果可以的话,请尝试理解代码背后的逻辑。 我了解我的解决方案还有改进的余地,因此,我很乐意收到有关我的代码的任何建议! 快乐的编码:)

Project Euler解题汇总 051 ~ 060

  [color=red]注[/color]:本文代码中会使用[url=http://eastsun.iteye.com/admin/blogs/207614]按字典顺序生成所有的排列[/url]与[url=http://eastsun.iteye.com/admin/blogs/240339]筛法求素数[/url]中介绍的函数。 [url=http://projecteuler.net/i...

JavaSxy的专栏 806

euler-java:Java 8 中的 Project Euler 解决方案

欧拉-java Java 8 中的 Project Euler 解决方案

RAG 赋能客服机器人:多轮对话与精准回复

在人工智能技术飞速发展的今天,客服机器人已成为企业提升服务效率的重要工具。然而,传统客服系统在多轮对话连贯性和精准回复能力上存在明显短板。检索增强生成(Retrieval-Augmented Generation, RAG)技术通过结合大语言模型(LLM)与外部知识库,为解决这一问题提供了创新路径。本文将深入探讨 RAG 在客服机器人中的应用,重点分析其如何实现多轮对话与精准回复,并结合实际案例与技术框架展开讨论。

shuizhudan223的博客 2143

Project Euler解题汇总 013 ~ 022

  [b][color=darkred]前言[/color][/b]:[url=http://projecteuler.net/]Project Euler[/url]是一个很有趣的网站,上面提供了一系列有一定挑战性的数学问题,这些问题如果单凭手工计算做不了几个,但如果使用编程并采用适当的算法就可以解决之。如果你对数学感兴趣并且会编程不妨去试试。   这篇帖子接着[url=http://east...

JavaSxy的专栏 340

S32K144驱动TPS929120避坑实录:从原理图设计到PWM调光漏电流的完整解决流程

本文详细解析了S32K144驱动TPS929120在车规LED驱动中的常见问题与解决方案,重点解决了PWM调光漏电流的行业难题。从原理图设计、FlexWire通信到软件调试,提供了一套完整的工程化避坑指南,特别针对车规MCU应用中的温度漂移、地址冲突等痛点给出了实用建议。

weixin_30872157的博客 561

Project Euler Problem 41 Pandigital prime

Pandigital prime Problem 41 We shall say that an n-digit number is pandigital if it makes use of all the digits 1 to n exactly once. For example, 2143 is a 4-digit pandigital and is also prim

海岛Blog 932

探索Vortex开源GPGPU:RISC-V SIMT架构(4-1),Execute SFU(1)

本文详细分析了Vortex RISC-V内核6级流水线中Execute阶段的SFU(特殊功能单元)模块。重点介绍了SFU的数据流结构,包含dispatch_unit、pe_switch、csr_unit、wctl_unit和gather_unit五个子模块。文章深入解析了warp控制指令wspawn和tmc的实现机制:wspawn用于激活指定数量的warp并设置新PC值,tmc则用于控制线程掩码和warp状态。通过C代码和汇编指令的对照分析,阐明了这些指令在并行计算中的关键作用,包括线程激活、状态切换和执行

weixin_55313207的博客 1364

红外:非均匀性校正01_基本原理与基本方法

非均匀校正(nonuniformity correction,NUC) 基本原理 这里要表达的意思就是:图中每一条直线对应一个像素点的,亮度/辐照度的情况。由于硬件的关系,每一个像素点的线性响应很不一样,所以需要通过矩阵来校正。 校正原理: 一点校正 两点校正 其他原理介绍: 参考链接: 基于多项式拟合的红外焦平面非均匀校正 课件:光电成像——非均匀性校正 红外图像非均匀性校正相关汇总 红外非均匀性校正算法总结 红外图像非均匀矫正——一点矫正 ...

dlvector的博客 2万+

project Euler第八题--java版

好久没用过java了,该忘的全忘了,不该忘的也顺带着给忘了,基本上是看着api写代码的。 关于算法就不再多说了,参考project Euler第八题,这个是按照下边说的算法实现的。 package ten; import java.util.Queue; import java.util.LinkedList; public class Problem8 { publi

AncerHaides的专栏 933

windows11 远程桌面连接 通过代理连接RDP桌面报错 错误代码0x904 拓展错误代码0x7

打开windows Defender防火墙设置--允许应用通过防火墙更改设置--允许其他应用浏览--进入C:\WINDOWS\system32目录选择mstsc.exe进入C:\Windows\SysWOW64目录h'qmstsc.exe添加后列表里多了一个远程桌面连接,还有一个Remote Desktop Connection,配置网络权限后保存连接成功。

weixin_43978891的博客 1万+

Project Euler解题汇总 001 ~ 012

[b][color=red]EDIT[/color][/b]: [color=blue]2010.5.7,添加关于Scala版本的说明,添加Scala2.8的实现代码[/color]   前日在网上闲逛,发现了这个有意思的网站[url=http://projecteuler.net/]Project Euler[/url]。这个网站给出了一系列数学相关的题目,你可以使用编程去解答。 [qu...

JavaSxy的专栏 356

C++碰撞检测库FCL安装(MinGW,CMake)

FCL碰撞检测库、libccd\Eigen库编译配置,全流程问题记录

weixin_45650767的博客 4677

85-Halcon-- gen_cam_par_area_scan_division 函数功能(生成面阵相机镜头参数)

Halcon的gen_cam_par_area_scan_division算子用于生成面阵相机的镜头参数,支持除法畸变模型。该算子输出包含9个参数的元组,包括焦距(Focus)、畸变系数(Kappa)、像素尺寸(Sx,Sy)、主点坐标(Cx,Cy)和图像尺寸。文中详细解析了各参数含义、数学原理(包括畸变矫正公式和坐标转换),并提供了三个工业应用案例:高精度芯片尺寸测量、机器人焊接引导和大视野汽车表面检测。最后给出了完整的相机标定流程,涵盖参数生成、畸变校正和标定配置步骤,适用于工业视觉系统的精确标定需求。

weixin_45590420的博客 915

问题13-求100个50位数之和的前10位数字

这个问题比较bt 问题描述如下: “求以下100个50位数之和的前10位数字 37107287533902102798797998220837590246510135740250 463769376774900097126481248969700780504170182605387432498619952474105947423330951305812372661730962991942...

375

ESP-SPARKBOT AI 智能机器人:v1.2 全流程复刻指南

本文介绍 ESP-SPARKBOT AI 智能机器人 v1.2 版本的全流程复刻,包含 PCB 、3D 打印、固件烧录、常见问题解决、参考资料等

举世誉之而不加劝,举世非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。 9260

<MEMORY>Project Euler NO50

41这个质数,可以写作6个连续质数之和: 41 = 2 + 3 + 5 + 7 + 11 + 13 这是100以下的最长的和为质数的连续质数序列。 1000以下最长的和为质数的连续质数序列包含21个项,和为953. 找出100万以下的最长的何为质数的连续质数序列之和。 100万以下的哪个质数能够写成最长的连续质数序列? public class Problem5

q2234037172的专栏 502

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

微软技术日报 11-09:.NET 8 与 9 明日同时停止支持,注册表编辑器出了 WinUI 3 版

今天这四条消息的共同点是收口。.NET 8 和 9 的支持期到点,注册表编辑器的新界面只放在仓库里给人看,GitHub 把一类危险触发器按住默认,微软在安全报告里把防线从地址黑名单挪到行为。收口并不等于关门。.NET 10 还在支持期里,被按住的触发器可以用策略按文件放回来,实验室里的样例随时可能变成产品。区别在于这些动作要有人签字,不再是默认开着。如果今天只做一件事,去看一眼构建机上的 .NET 版本。明天之后,8 和 9 的漏洞补丁不会再来了。

海盗Sharp的博客 390

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

微软技术周报 11-02~11-09:VS Code 混装 Claude 与 Codex、EF Core 11 静默改行为、.NET 11 倒计时

11 月 6 日,Power Platform 通过消息中心通知管理员,Copilot Studio、Power Automate 和 Power Apps 里所有跑在 Anthropic Claude、xAI Grok 以及旧版 GPT 上的 prompt,12 月 2 日自动迁移到 GPT-6 系列,档位价格不变,模型选择收窄到一条产品线。效果是这样的:让 Claude 评审一个 Copilot chat 写出的方案,或者把同样的任务交给 Codex,两边并排跑在同一个会话里。更要紧的是下周的时间线。

海盗Sharp的博客 990

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

上一篇: 澄清:Java中只有按值传递,没有按引用传递!
下一篇: 不要随便和老外说中文!!
JavaSxy
博客等级 码龄21年 1粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值