C

素数

判断素数

int x;

scanf("%d", &x);

int i;
int isprime = 1;   //x是素数
for ( i = 2; i < x; i++ ) {
    if ( x % i == 0) {
        isprime = 0;
    }
}
if ( isprime == 1 ) {
    printf("是素数\n");
} else {
    printf("不是素数\n");
}

求100以内的素数

int x;

for ( x = 1; x <= 100; x++ ) {
    int i;
    int isprime = 1;
    for ( i = 2; i < x; i++ ) {
        if ( x % i ) {
            isprime = 0;
            break;
        }
    }
    if ( isprime == 1 ) {
        printf("%d", x);
    }
}

前50个素数(每5个一行输出)

int x;
int cnt = 0;

x = 1;
while ( cnt < 50 ) {
    int i;
    int isprime = 1;
    for ( i = 2; i < x; i++ ) {
        if ( x % i == 0 ) {
            isprime = 0;
            break;
        }
    }
    if ( isprime == 1 ) {
        cnt ++;
        printf("%d\t", x);
        if ( cnt % 5 == 0 ) {
            printf("\n");
        }
}

break 跳出循环

countinue 跳过循环这一轮剩下的语句进入下一轮

breakcountine 只能对它所在的循环做

嵌套的循环

嵌套循环各个循环的控制变量应该不一样

goto 

goto out ... out

goto无条件跳转容易破坏程序流程结构,只建议在多重循环中使用

前n项求和

f(n)=1+1/2+1/3+...+1/n

int n;
int i;
double sum = 0.0;

scanf("%d", &n);
n = 10;
for ( i = 1; i <= n; i++ ) {
    sum += 1.0/i;
}

printf("f(%d)=%f\n", n, sum);

f(n)=1-1/2+1/3-1/4+...+1/n

int n;
int i;
double sum = 0.0;
int sign = 1;

scanf("%d", &n);
for ( i = 1; i <= n; i++ ) {
    sum += sign * 1.0 / i;
    sign = -sign;
}

printf("f(%d)=%f\n, n, sum");

整数分解

int x;
scanf("%d", &x);

x = 13425;
int mask = 1;
int t = x;
while ( t > 9 ) {
    t /= 10;
    mask *= 10;
}
printf("x=%d, mask=%d\n", x mask);
do {
    int d = x / mask;
    printf("%d", d);
    if ( mask > 9 ) {
        printf(" ");
    }
    x %= mask;
    mask /= 10;
} while ( mask > 0 );
printf("\n");

求最大公约数

1.枚举法(有序地去尝试每一种可能)

int a,b;
int min;

scanf("%d %d", &a, &b);
if ( a < b ) {
    min = a;
} else {
    min = b;
}
int ret = 0;
int i;
for ( i = 1; i < min; i++ ) {
    if ( a % i == 0 ) {
        if ( b % i ) {
            ret = i;
        }
    }
}
printf("%d和%d的最大公约数是%d.\n", a, b, ret);

2.辗转相除法

(1)如果b等于0,计算结束,a就是最大公约数;

(2)否则,计算a除以b的余数,让a等于b,而b等于那个余数;

(3)回到第一步

int a,b;
int t;
scanf("%d %d", &a, &b);

while ( b != 0 ) {
    t = a % b;
    a = b;
    b = t;
}
printf("gcd=%d\n", a);

整数之间相除,结果是整数。

浮点数除以整数,结果是浮点数。

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值