我知道这是一个经典的面试问题,但下面是我创建一个函数的快速尝试,该函数返回两个数字的最小公倍数,这是我在日常工作中从不需要做的事情:
def calc_common_multiplyer(int_low, int_high)
i = 1
int_high_res = []
while true
int_high_res << int_high * i
if int_high_res.include?(int_low * i)
return int_low * i
end
i = i+1
end
end
我觉得这很笨拙。
我一直在研究Euler项目,这是我对问题#1的解决方案。它给了我正确的答案,但它非常慢。我怎样才能更有效地实现这一点?我的数学不是一流的,抱歉。
package main
import (
"fmt"
)
// Problem1: find the sum of all the multiples of 3 or 5 below 1000.
// x,y: multiples
// z: upper limit
func Problem1(x, y, z int) int {
Multiples := make(map[int]struct{})
大家好,我正在尝试创建一个接受两个数字的LCM函数。这段代码中的findCommonMultiple()函数基本上返回一个表示该数字的质因数的数组。我在这个函数中尝试做的是检查两个数组中是否有重复项,如果有,则将该数字推入一个新数组中。在推送一个数字之后,内部循环应该会中断,并继续进行下一次迭代。如果这两个数字不相等,它们都将被推送。即使其中一个数组超过了它们的索引,这种情况也会发生。在推送了所有重复因子和唯一因子之后,我将开始将它们相乘,并返回这两个数字的LCM。我还没有为此创建一个助手函数,但我需要先解决这个问题。
function leastCommonMultiple(num1,
其他输入似乎可以很好地找到结果,我对此很满意,但当我输入15和5时,我得到的结果是0而不是5,为什么会发生这种情况?
从我能想到的逻辑来看,使用注释来跟随keep track,它应该工作得很好,但事实并非如此。
#include <stdio.h>
#include <math.h>
int m;
int n;
int GCD(int m, int n);
int main(void)
{
scanf("%d %d", &m, &n);
printf("M = %d, N = %d", m, n);
我已经写了一个分数类,在简化方面遇到了麻烦。
当我创建分数对象时,一切都很好,我只是认为我的逻辑与简化混乱。
(num和den分别是类中分子和分母的私有变量)
下面是我的GCD和Simplify方法:
/**
* Returns the absolute value of the greatest common divisor of this
* fraction's numerator and denominator. If the numerator or denominator is
* zero, this method returns 0. This method al
我已经运行了下面的代码,我认为它是正确的。然而,它只是不断地返回堆栈溢出。当我在调试模式下运行它时,我注意到函数x%y以某种方式返回y,而不是应该为0的余数。有没有人能帮帮忙看看为什么会这样?
public class test
{
public static void main (String [] args)
{
System.out.println(gcd(50,10));
}
static double gcd(double x, double y)
{
if (x > y)
{
这是Project问题#5,这个语句找到了第一个n个自然数最不常见的倍数。例如,1,2的最不常见倍数。10是2520。
我承认我只是在尝试一些随机的东西,我没想到下面这些东西会起作用(用Python编写):
factors = int(input())
factorList = []
for i in range(2, factors+1):
factorList.append(i)
for i in range(len(factorList)-1):
for j in range(2*i+2, len(factorList), i+2):
fact
我有下面的函数,它可以找到2个整数的最大公约数。我不明白在返回greatestCommonDivisor(b,(a%b));部分中发生了什么。
如果我做greatestCommonDivisor (8,12),我得到4,这是正确的,但是当我试图计算返回的greatestCommonDivisor(b,(a%b))时;第一部分得到(12,(8% 12)),它简化为(12,0),这是如何等于4的?
// Finds greatest common divisor
function greatestCommonDivisor(a, b) {
if (b == 0) {
ret
我是ios编程的新手。我有一个关于GCD项目的问题。
01 // This program finds the greatest common divisor of two nonnegative integer values
02
03 #import <Foundation/Foundation.h>
04
05 int main (int argc, const char * argv[]) {
06 NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
07 unsigned int u
在C++中,我有一个关于Project Euler Task5的问题,它是: 2520是一个最小的数字,可以被从1到10中的每个数字除以,没有任何余数。
能被从1到20的所有数字整除的最小正数是多少?
我已经写了代码,我认为它应该可以工作,但它不能……老实说,我不知道为什么它不能,所以任何帮助都会非常感谢:
#include <iostream>
using namespace std;
int main()
{
int smallestprod = 1;
for (int ii = 1; ii <= 20; ii++)
{
if (smal
我有一个关于python优先级的问题。我有以下代码:
def gcdIter(a, b):
ans = min(a,b)
while ((a%ans is not 0) and (b%ans is not 0)):
ans -= 1
return ans
我的问题是关于while逻辑语句。我添加了几个括号,以确保表达式的计算方式与我的想法相同,但事实并非如此。while循环在两个表达式为真之前就被破坏了。我说错了吗?
我找到了一种不用两个表达式就能做同样事情的方法,在下面的代码中:
def gcdIter(a, b):
ans = min(a,b)
这就是挑战所在。给定两个名为a和b的整数:
//找出两个最大的数,小于a和b,可被彼此整除。
//输入: a:102,b:53 //输出:(102,51)
//输入: a:7,b:4 //输出:(6,3)
//输入: a:3,b:2 //输出:(2,2)
关键是,我不想暴力破解它。我想结果是O(n²)。
下面是该方法的签名:
static Tuple<int, int> Analyze(int a, int b)
{
if (a % b == 0)
return new Tuple<int, int>(a, b);
else
我正在尝试用Python实现Pollard的P-1分解。注意,Rho方法有一些答案,但这个p-1是不同的,关于p-1,我能给你的最好的答案是wiki和Wolfram:
的s_p_%E2%88%92_1_algorithm
这是从n中分解一些东西,但始终找不到p。np和sp分别来自numpy和scipy。因此,sp.uint64的内置函数是一个无符号的长64整数(因为预期整数的大小),而np.prod(p)是列表p的累积乘积pi:
def pm1_attack(n,b):
p = [2,3,5,7,11,13,17]; i=19; a=2
while i<b:
if is
下面的关系只适用于两个(3,12)数字,当用于三个数字(3,12,10)时,它无法产生正确的答案。只是想知道这是我的理解,还是只针对两个数字,对我来说欧几里得算法也是如此。
LCM(a, b) = (a x b) / GCD(a,b) or GCD(a,b) = (a x b) / LCM(a, b)
从Haskell开始,我把这个丑陋的片段放在一起,来确定一个列表中的数字,这个列表可以被一个数字整除,所有小于这个数字的数字。
divis :: (Integral a) => a -> [a] -> [a]
divis _ [] = []
divis n (x:xs)
| x `mod` n == 0 && n == 2 = x : divis n xs
| x `mod` n == 0 = divis (n-1) [x] ++ divis n xs
| otherwise = divis n xs
我可以这样叫它。
head (d
我需要写一个程序来打印两个输入整数的最大公约数,并证明它的正确性。我写了以下内容:
def main():
x = int(input("Enter the first integer: "))
y = int(input("Enter the second integer: "))
print(gcd(x,y))
def gcd(x,y):
if x > y:
smaller = y
else:
smaller = x
for i in range(1, smalle
我不能解决下面的问题。你能帮我解决这个问题吗?
You are given two jugs with capacities jug1Capacity and jug2Capacity liters. There is an infinite amount of water supply available. Determine whether it is possible to measure exactly targetCapacity liters using these two jugs.
If targetCapacity liters of water are measurabl
我有以下函数来计算列表中所有元素的LCM。是否有任何提示来计算每个(n-1)子集的每个LCM并将其存储在列表中?
fun modulo (_,0) = 0
| modulo (0,_) = 0
| modulo (x,y) = if y > x then x else
let
fun getMod(z) = if z >= y then getMod(z-y) else z
in
getMod(x)
end
fun lcm (0,_) = 0
| lcm (_,0) = 0
| lcm (x,y) =
le
我正在使用euclids算法的一个简化版本来找到两个整数的hcf。使用递归函数。似乎不起作用,它只是一直返回c。你知道为什么它最终不会返回a+b吗?
public class Euclid {
public static void main(String[] args) {
// TODO Class to find HCF (GCD) of two ints, using recursion
Euclid r = new Euclid();
System.out.println(r.hcf(188, 112));
}
public int hcf(
我正在处理一个整除问题,如果让数字既能被2又能被3整除,它也能被6整除,并且应该只打印被6整除的数字。如果一个数字可以被2整除,它有时也可以被10整除,你应该打印10除数。我做错了什么?这是我的代码。
function main(number) {
if (number % 2 === 0 && number % 3 === 0) {
console.log("The number is divisible by 6");
} else if (number % 3 === 0) {
console.l
下面提供了gcd方法的前置条件和后置条件。
pre: x > 0 & y > 0
post: result > 0 &
x mod result = 0 & y mod result = 0 &
∀t:Integer · t > 0 & x mod t = 0 & y mod t = 0 ⇒ result mod t = 0
然而,我在遵循post条件时遇到了问题...对我来说,它基本上是说找到任何可以被两者整除的整数。它是如何得到最大除数的,条件到底是什么?
项目euler #5的问题是: 2520是最小的数字,可以被从1到10的每个数字整除,没有任何余数。能被从1到20的所有数字整除的最小正数是多少?
result=1
done=False
while not done:
result+=1
for x in range(2,21):
if result%x!=0:
break
elif x==20:
done=True
print(result)
但是当它运行时,它需要太长的时间。嗯,看起来这个代码不能工作。这段代码有什么问题?
我需要使用递归函数来找到用户输入的两个数字之间的最大公分母。递归对我来说仍然有点困惑,我被告知我有租约可以不使用它。下面的函数算不算使用递归?我还是个编程新手。
def gcd(m, n):
#Determine bases
if m==0:
return n
if n==0:
return m
#Find the lowest number
if m > n:
lowest = n
else:
lowest = m
for i in range(1,lowest + 1):
if