吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2157|回复: 5
收起左侧

[C&C++ 转载] 菜鸟学C第23题:有10个两位整数,把这些数作以下变化,如果它是素数,则把它乘...

[复制链接]
追梦少年_66 发表于 2017-11-23 18:55
[Asm] 纯文本查看 复制代码
/*
/*23.	有10个两位整数,把这些数作以下变化,如果它是素数,则把它乘以2,若它是偶数则除以2,其余的数减1,请将变化后的10个数按从小到大的次序打印出来。
*/

#include<stdio.h>
#include<stdlib.h>
#include<math.h>

int isit(int num);
void quicksort(int *a, int start, int back);
void show(int *a, int length);




void main() {
	int a[10] = { 98,23,56,43,51,15,88,14,77,11 };

	for (int i = 0; i < 10; i++) {
		if (a[i] % 2 == 0) {
			a[i] = a[i] / 2;
		}
		else if (isit(a[i])) {

			a[i] = 2 * a[i];
		}
		else {

			a[i] = a[i] - 1;
		}
	}
	show(a,10);
	quicksort(a, 0,9);
	show(a, 10);
	getchar();
}


int isit(int num) {
	int flag = 1;
	for (int i = 2; i <= sqrt(num); i++) {
		if (num % i == 0) {
			flag = 0;
			break;
		}
	}
	return flag;
}

void show(int *a, int length) {
	for (int i = 0; i < length; i++) {
		printf("%d,", a[i]);
	}
	printf("\n-------\n");
}
void quicksort(int *a, int start, int back) {
	printf("back=%d\n", back);
	int j = start; //这一步很重要啊,不是0
	if (start < back) {

		for (int i = start + 1; i <= back; i++) {

			if (a[i]<a[start]) {
				j = j + 1;
				int temp = a[i];
				a[i] = a[j];
				a[j] = temp;
			}
		}
		int temp = a[j];
		a[j] = a[start];
		a[start] = temp;
		quicksort(a, start, j - 1);
		quicksort(a, j + 1, back);
	}
}

免费评分

参与人数 3吾爱币 +3 热心值 +3 收起 理由
只手过河 + 1 + 1 谢谢@Thanks!
你还看我 + 1 + 1 用心讨论,共获提升!
寒蝉鸣泣之时 + 1 + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 追梦少年_66 发表于 2017-11-23 18:56
所谓素数是指除了1和它本身以外,不能被任何整数整除的数,例如17就是素数,因为它不能被2~16的任一整数整除。因此判断一个整数m是否是素数,只需把m被2~m-1之间的每一个整数去除,如果都不能被整除,那么m就是一个素数
另外判断方法还可以简化。m不必呗2~m-1之间的每一个整数去除,只需被2~√m之间的每一个整数去除就可以了。如果m不能被2~√m间任一整数整除,m必定是素数。例如判别17是是否为素数,只需使17被2~4之间的每一个整数去除,由于都不能整除,可以判定17是素数。(原因:因为如果m能被2~m-1之间任一整数整除,其二个因子必定有一个小于或等于√m,另一个大于或等于√m。例如16能被2,4,8整除,16=2*8,2小于4,8大于4,16=4*4,4=√16,因此只需判定在2~4之间有无因子即可)
you789 发表于 2017-11-23 19:07
Try0oo 发表于 2017-11-23 19:25
冷风中的一把刀 发表于 2017-11-23 19:47
吾爱有你更精彩
只手过河 发表于 2017-11-23 20:28
学习,提升
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-2 09:53

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表