面向信息时代的计算机数学:CINTA作业一

这篇博客探讨了C语言在信息时代中的应用,包括编写判断偶数和2的次方的函数,以及实现迭代版的简单乘法。还涉及了整除性质的数学证明,并通过举例说明了某个特定形式的整数不是平方数。此外,博客还提供了求两个整数之和的高效算法。
摘要由CSDN通过智能技术生成

面向信息时代的计算机数学

CINTA作业一

  1. 用 C 语言编程实现判断输入为偶数的函数,即如果输入为偶数,返回 T rue,否则 返回 Fal
bool pan(int x) {
	if (x % 2 == 0)
		return True;
	return False;
}
  1. 给定一个整数 v,如何判断 v 是否 2 的某次方?比如,v = 4 = 22,返回 T rue; v = 9 = 23 + 1 并非 2 的次方,返回 False。请写一个 C 语言的函数来实现以上功能。
bool jud(int x) {
	if (x == 0)
		return 0;
	while ((x - ((x >> 1) << 1)) == 0) {
		x = x >> 1;
	}//先把二进制低位的0去掉
	x = x >> 1;
	if (x != 0)
		return false;
	else
		return true;
    //再把一位1去掉,如果还有1就不是2的某次方
}

后来在leetcode(231. Power of Two)上交的AC代码是这样子的

class Solution {
public:
    bool isPowerOfTwo(int n) {
        if (n <= 0)//2的多少次方也不可能是负数,加个判定
		return 0;
	while ((n ^ ((n >> 1) << 1)) == 0) {//把减法换成异或超越百分之一百的人
		n =n >> 1;
	}
	n = n >> 1;
	if (n != 0)
		return false;
	else
		return true;
    }
};
  1. 用 C 语言编程实现一种迭代版本的简单乘法。
#include <iostream>
using namespace std;

int mul(int a, int b) {
	if (b < 0) {
		a = -a;
		b = -b;
	}
	if (b == 0)
		return 0;
	int sum = 0;
	while (b != 1) {
		if (b % 2) {
			sum += a;
			a = a << 1;
		} else {
			a = a << 1;
		}
		b /= 2;
	}
	return sum + a;
}

int main() {
	int a, b, sum = 0;
	cin >> a >> b;
	cout << mul(a, b);
	return 0;
}
  1. 证明命题1.1。

命题 1.1. 整除性 ♠ 设 a, b, c ∈ Z,如果 a | b,b | c,则 a | c。如果 c | a,c | b,则对任意 m, n ∈ Z,有 c | (ma + nb)。

证明:由如果 a | b,b | c,则 a | c可知

因为对任意m, n ∈ Z,a | ma ,b | nb,又因为c | a,c | b,所以c | ma,c | nb

又因为分配律,所以c | (ma+nb)

  1. 证明任意形如 111 ⋅ ⋅ ⋅ 111 ∣ z n 111 · · · 111 | {z } n 111⋅⋅⋅111∣zn 的整数都不是平方数,n > 2。

证明:从列一个平方乘法的竖式开始,例如yx_*yx_

要想结果个位为1,横线处只能填1或9

要是填9的话,十位的结果是x*9+x*9+8,则十位一定不能是1

要是填1的话,十位的结果是x*1+x*1,则十位一定不能是1

因为十位都没有可能是1所以一定没有一个由n个1组成的整数是平方数

*群里补加题(leetcode 371. Sum of Two Integers)

int getSum(int a, int b) {
	while (b != 0) {
		int c = a;
		a = a ^ b;
		b = (unsigned int)(c & b) << 1;
		//不加unsigned int的话leetcode 上会有最高符号位的报错
	}
	return a;
}
好的,这里是50种不同国家的语言表达“我爱你”: 1. English - I love you 2. Spanish - Te quiero 3. French - Je t'aime 4. German - Ich liebe Dich 5. Italian - Ti amo 6. Portuguese - Eu te amo 7. Russian - Ya lyublyu tebya 8. Chinese (Mandarin) - Wo ai ni 9. Japanese - Aishiteru 10. Korean - Sarang hae 11. Arabic - Ana behibak (to a male) / Ana behibek (to a female) 12. Dutch - Ik hou van je 13. Danish - Jeg elsker dig 14. Swedish - Jag älskar dig 15. Norwegian - Jeg elsker deg 16. Finnish - Minä rakastan sinua 17. Polish - Kocham Cię 18. Czech - Miluji Tě 19. Hungarian - Szeretlek 20. Bulgarian - Obicham te 21. Greek - S'ayapo 22. Turkish - Seni seviyorum 23. Romanian - Te iubesc 24. Croatian - Volim te 25. Serbian - Volim te 26. Slovenian - Ljubim te 27. Slovak - Milujem Ťa 28. Estonian - Ma armastan sind 29. Latvian - Es tevi mīlu 30. Lithuanian - Aš tave myliu 31. Icelandic - Ég elska þig 32. Albanian - Te dua 33. Thai - Phom rak khun (to a male) / Chan rak khun (to a female) 34. Vietnamese - Anh ye^u em (to a female) / Em ye^u anh (to a male) 35. Indonesian - Saya cinta padamu 36. Filipino - Mahal kita 37. Hindi - Main tumse pyar karta hoon 38. Bengali - Ami tomake bhalobashi 39. Urdu - Main tumse muhabbat karta hoon 40. Marathi - Me tujhe pyaar kartaa hoo 41. Punjabi - Main tere pyar da haan 42. Telugu - Nenu ninnu premisthunnanu 43. Tamil - Naan unnai kaadhalikken 44. Malayalam - Njan ninnodenikkoo 45. Kannada - Naanu ninna preetisuttene 46. Gujrati - Hu tane pyar karoo chu 47. Nepali - Ma timilai maya garchu 48. Sinhala - Mama oyata arderyi 49. Burmese - Chit pa de 50. Mongolian - Bi chamd hairtai
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值