//假设线性表用数组a表示,长度为n,划分的关键字为Ki voidpartition(int a[], int n, int Ki) { //定义两个指针i和j,分别指向数组的头和尾 int i = 0; int j = n - 1; //循环直到i和j相遇 while (i < j) { //从左向右找到第一个大于等于Ki的元素 while (i < j && a[i] < Ki) { i++; } //从右向左找到第一个小于Ki的元素 while (i < j && a[j] >= Ki) { j--; } //如果找到了,交换两个元素的位置 if (i < j) { int temp = a[i]; a[i] = a[j]; a[j] = temp; } } //最后,i指向的位置就是划分的界限 }
for flower inrange(100, 1000): a = flower // 100# 百位数字是flower除以100,然后向下取整 b = flower // 10 % 10# 十位数字是flower除以10,向下取整然后再除以10取余 c = flower % 10# 个位数字是flower除以10再取余 if flower == a ** 3 + b ** 3 + c ** 3: print(flower)
求和
1 2 3 4 5 6
sum1 = 0 i = 1 while(i <= 100): sum1 += i i += 1 print("sum1 = ", sum1)
斐波那契数列
1 2 3 4 5 6 7
x1, x2 = 0, 1 i = 1 print(x1, end=' ') while i <= 20: print(x2, end=' ') x1, x2 = x2, x1 + x2 i += 1
找质数更好的办法
1 2 3 4 5
num = [] for i inrange(200, 301): ifall(i % m != 0for m inrange(2, i)): num.append(i) print(num)
最大公约数和最小公倍数
1 2 3 4 5 6 7 8 9 10
x, y = input("输入两个比较值,用逗号隔开").split(',') Min = int(min(x, y)) Max = int(max(x, y)) Gys = 1 for i inrange(1, Min + 1): if Max % i == 0and Min % i == 0: Gys = i print("最大公约数为:%d" % Gys) Gbs = Min * Max / int(Gys) print("最小公倍数为:%d", Gbs)
阶乘求和
1 2 3 4 5 6 7 8
n = int(input("请输入一个正整数:")) sum = 0 for i inrange(1, n + 1): factorial = 1 for j inrange(1, i + 1): factorial *= j sum += factorial print("阶乘求和为:", sum)
递归求1到100的和
1 2 3 4 5 6 7 8
defsumn(n): if n > 0: return n + sumn(n-1) else: return0