//*************************************************************************************************************************
第一题:
2520是可以被1到10中的每个数字除以没有任何余数的最小数字。
什么是可以被1到20的所有数字整除的最小正数?
答案:
codes:
C++:
#include
/*
按照倍数关系,在1-20内:
11,13,17,19
这四个数是10-20之间的质数,
1,2,3,5,7
这五个数是1-10之间的质数;
因此:这个 MIN_NUM 首先是必须被这几个数整除的;
*/
#define SCALE 20
int main()
{
long Test_Num = 1;
int i = 2, j = 1;
for (i; i < SCALE; i++) {
j = 1;
for (j; j < i; j++) {
if (i%j == 0&&j!=1) {
break;
}
if (j == i - 1) {
Test_Num *= i;
}
}
}//找出1-20中的质数的最小公倍数;
std::cout << Test_Num << std::endl;
//找到了1-20所有质数的最小公倍数,只要按倍数相乘就能得到所求条件;
//现在剩下:4.6.8.9.12.14.15.16.18.20
//在现实中做的时候实际上是把非质数拆开,观察是质数的多少倍,然后乘以倍数;
//在程序中还是以遍历的方式快且容易想到;
i = 2;
for (i; i <=SCALE; i++) {
if (((Test_Num%i) != 0)) {
j = 2;
for (j; j
JAVA(。。)
//*************************************************************************************************************************
第二题:
前十个自然数的平方和是,
12 + 22 + ... + 102 = 385
前十个自然数之和的平方是,
(1 + 2 + ... + 10)2 = 552 = 3025
因此前10个自然数的平方和与平方和的差值为3025 - 385 = 2640。
找出前100个自然数的平方和与平方和的差值。
答案:25164150
codes:
C++:
#include
int main()
{
long sum_1 = 0, sum_2 = 0;
long long sum = 0;
int i = 1;
for (i; i <= 100; i++) {
sum_1 += (i*i);
}
//std::cout << sum_1 <
JAVA(。)
//*************************************************************************************************************************
第三题:
通过列出前六个素数:2,3,5,7,11和13,我们可以看到第六个素数是13。
什么是第10001号素数?
答案:104743
CODES:
C++
#include
int Is_Prime_Num(long num);
int main()
{
int cnt = 0,i=0;
long num = 2, Prime_Num = 0;;
while (cnt <10001) {
//std::cout << num << std::endl;
i = Is_Prime_Num(num);
//std::cout << i << std::endl;
if (i) {
cnt++;
Prime_Num = num;
}
num++;
}
std::cout << Prime_Num << std::endl;
return 0;
}
int Is_Prime_Num(long num)
{
int j = 2;//j从2开始很重要,要不然这个函数就会一直返回0,主程序就会陷入死循环
for (j; j < num; j++) {
if (num%j == 0) {//要是j从1开始,if条件判断为:num%j==0&&j!=1;
return 0;
}
}
return 1;
}
JAVA(。。)
//*************************************************************************************************************************
第四题:
毕达哥拉斯三元组是一组三个自然数,a a(2)+ b(2) = c(2)
例如,3(2) + 4(2) = 9 + 16 = 25 = 52。
有一个毕达哥拉斯三元组,其中a + b + c = 1000。
找到产品abc
答案:
CODES:
C++
#include
int main()
{
int a = 1, b = 1, c = 1;
for (a; a <= 1000; a++) {
b = 1;
for (b; b <= 1000; b++) {
c = 1;
for (c; c <= 1000; c++) {
if ((a*a) + (b*b) == (c*c) ) {
if((c>b)&&(b>a)&&(a+b+c==1000))
std::cout << a << b << c << std::endl;
}
}
}
}
return 0;
}
JAVA(。。)
//*************************************************************************************************************************