1.如果我们列出所有低于10的自然数是3或5的倍数,我们得到3,5,6和9,这些倍数的总和为23。找到1000以下所有3或5的倍数的总和。
答案:233168.
clc,clear
N = 1000;
A = 3:3:N-1;
B = 5:5:N-1;
C = union(A, B); %取并集
result = sum(C)
参考网址:https://www.ilovematlab.cn/thread-222867-1-293.html
2. 斐波那契数列中的每个新项都是通过添加前两个项生成的。从1和2开始,前10项将是:1、2、3、5、8、13、21、34、55、89、……通过考虑斐波那契数列中值不超过四百万的项,找出偶数项的和。
答案: 4613732
clc,clear
a=1;
b=2;
ans=2;
while b<4000000
c=a+b;
tmp=c;
a=b;
b=tmp;
if rem(b,2)==0
ans=ans+b;
end
end
ans
3. 13195的质因数是5、7、13和29。数字600851475143的最大质因数是什么?
答案:6857
clc,clear
num=600851475143;
newnum=num; %需要将这个数值赋给变量方便后面使用
facter=2; %最小质数为2
largestFact=0;
while facter*facter<newnum %极端情况
if rem(newnum,facter)==0
newnum=newnum/facter; %将newnum更新
largestFact=facter;
else
facter=facter+1;
end
end
if newnum>facter
largestFact=newnum;
end
largestFact
转载链接:https://blog.csdn.net/ttvipandc
4. 回文数字的两种读法是相同的。由两个2位数字相乘得到的最大回文是9009 = 91×99。找出由两个3位数的乘积构成的最大回文。
答案: 906609
993*913
out=[];
for a=100:999
for b=100:a %b从100到a变化,使得b<=a,从而避免a和b互换的重复
c=a*b;
d=num2str(c);
if isequal(d,d(end:-1:1))
out=[out;[a b c]]; %out是个nx3的矩阵,其中第一列,第二列表示两个乘数,而第三列就是乘积
end
end
end
max(out)
转载链接:https://zhidao.baidu.com/question/1988383871520677987.html
python3:
max = 0
for i in range(100,1000):
for j in range(100,1000):
palindrome = i*j
num = str(palindrome)[::-1] #把这个数当字符串反转后相等就是回文
if (num == str(palindrome)):
print("回文数",palindrome)
if palindrome>max:
max = palindrome;
print("最大是",max)
转载链接:https://www.jianshu.com/p/dae9c0648110
5.2520是可以除以1到10中的每个数字而没有任何余数的最小数字。可以被1到20的所有数字整除的最小正数是多少?
答案:232792560
tic;
disp(prod([2,3,4,5,6,7,11,13,17,19]));
toc;
%%分析:
第一步是分离数表,将质数和非质数分离,质数不超过lgn个,所以可以在O(lgn)时间内解决
第二步是从质数表中,进行叠乘运算,找出所能叠到的最大值。这么做的原因是,质数代表了所有的公因子,而公倍数包含公因子的乘方,这个循环也可以在O(lgn)的时间上限完成。
下面是手算演示:
1-10的素数表: 2,3,5,7
叠乘:2*2*2=8,到达临界条件,取得4,
3*3=9,到达临界条件,取得3
最终叠乘:2*3*5*7*3*4=2520
----------------------------------------------------------------
1-20的素数表:2,3,5,7,11,13,17,19
( 在2520基础上,乘上11-20的质数,有11,13,17,19.因为这儿还有个16,而2520只够 除8,所以再乘以2.)
2,3,4,5,6,7,11,13,17,19
最终叠乘:2520*11*13*17*19*2=232792560
6.前十个自然数的平方和是, 1 2 + 2 2 + . . . + 1 0 2 = 385 1^2 + 2^ 2 + ... + 10^2 = 385 12+22+...+102=385 前十个自然数之和的平方是, ( 1 + 2 + . . . + 10 ) 2 = 5 5 2 = 3025 (1 + 2 + ... + 10)^2 = 55^2 = 3025 (1+2+...+10)2=552=3025 因此,前十个自然数的平方和与总和的平方之差为3025-385 = 2640。 找出前100个自然数的平方和与总和的平方之间的差异。
clc,clear
sum1=0;
m=0;
sum2=0;
for i=1:100
sum1=sum1+i^2;
end
for j=1:100
m=m+j;
sum2=m^2;
end
sum2-sum1
7.通过列出前六个素数:2,3,5,7,11和13,我们可以看到第6个素数是13。第10 001个素数是多少?
答案:104743
clc,clear
i=0;
k=0;
while k<10001
i=i+1;
while isprime(i)
k=k+1;
break;
end
end
i
**python:**
import math
def isPrime(n):
for i in range(2,int(math.sqrt(n))+1):
if n%i==0:
return False
return True
num = 1
count = 0
while True:
num += 1
if isPrime(num):
count += 1
if count == 10001:
break
print (num)