吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

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

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

[复制链接]
追梦少年_66 发表于 2017-11-23 18:55
[Asm] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
/*
/*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, 2025-4-18 18:39

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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