手痒刷题系列:3/2刷题记录

103 篇文章 0 订阅


//*************************************************************************************************************************

第一题:

2520是可以被1到10中的每个数字除以没有任何余数的最小数字。

什么是可以被1到20的所有数字整除的最小正数?

答案:

codes:

C++:

#include<iostream>
/*
按照倍数关系,在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<i; j++) {
					if ((i%j) == 0) {
						Test_Num = Test_Num * j;
						break;//这个break很关键,自己做的时候开始掉了break,会导致在i=8的时候多乘一个2;
					}
				}
		}
	}
	std::cout << Test_Num << std::endl;
	return 0;
}

JAVA(。。)

//*************************************************************************************************************************

第二题:

前十个自然数的平方和是,
12 + 22 + ... + 102 = 385
前十个自然数之和的平方是,
(1 + 2 + ... + 10)2 = 552 = 3025
因此前10个自然数的平方和与平方和的差值为3025 - 385 = 2640。
找出前100个自然数的平方和与平方和的差值。

答案:25164150

codes:

C++:

#include<iostream>
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 <<std::endl;
	i = 1;
	for (i; i <= 100; i++) {
		sum_2 += i;
	}
	sum = (sum_2*sum_2);
	//std::cout << sum << std::endl;
	std::cout << sum - sum_1 << std::endl;
	return 0;
}

JAVA(。)

//*************************************************************************************************************************

第三题:

通过列出前六个素数:2,3,5,7,11和13,我们可以看到第六个素数是13。

什么是第10001号素数?

答案:104743


CODES:


C++

#include<iostream>
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 <b <c,为此,
a(2)+ b(2) = c(2)
例如,3(2) + 4(2) = 9 + 16 = 25 = 52。
有一个毕达哥拉斯三元组,其中a + b + c = 1000。

找到产品abc

答案:

CODES:

C++

#include<iostream>
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(。。)

//*************************************************************************************************************************


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值