C语言初步-第39讲:问题求解——求素数(练习综合)

这篇博客探讨了如何使用C语言解决求素数的问题,并通过对比不同的解题思路,展示了如何优化代码,使其更加高效和模块化。作者通过分析年份、月份和日子的关系,提出了一种新的回文日判断方法,从而引申到求素数问题的改进方案。
摘要由CSDN通过智能技术生成

任务和代码:

/*
*Copyright (c)2017 CSDN学院
*All rights reserved
*文件名称:main.c
*作者: Osseyda
完成日期:2017.9.27
*版本号:v2.
*
*问题描述:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3,再如8的因子和是7(即1+2+4),8不是完数。
          (1)输入一个数n,判断n是否是完数
          (2)输出1000以内的所有完数
*问题输出:输出1000以内的所有完数
*/
#include <stdio.h>
int main(){
    int i,m,total,is_complete,n=0;
    for(m=1;m<=1000;m++){
        is_complete=1;
        total=0;
        for(i=1;i<m;i++){
            if(m%i==0)
                total+=i;
        }
        if(m!=total){
            is_complete=0;
        }
        if(is_complete==1){
            printf("%d\t",m);
            n++;
            if(n%5==0)
                printf("\n");
        }
    }
    return 0;
}
运行结果:



/*问题描述:亲密数:如果整数A的全部因子(包括1,不包括A本身)之和等于B;且整数B的全部因子(包括1,不包括B本身)之和等于A,则将整数A和B称为亲密数。求3000以内的全部亲密数。
*问题输出:输出3000以内的全部亲密数。
*/
#include <stdio.h>
int main(){
    int m,i,j,a,b;
    for(m=1;m<=3000;m++){
        a=0,b=0;
        for(i=1;i<m;i++){
            if(m%i==0)
                a+=i;    //a是m的因子和
        }
        for(j=1;j<a;j++){
            if(a%j==0)
                b+=j;    //b是a的因子和
        }
        if(b-m==0&&a!=m){         //若b=m,则a和m互为亲密数
            printf("a=%d,其因子和为%d\t",m,a);
            printf("b=%d,其因子和为%d\t",a,m);
            printf("故a和b是一对亲密数\n");
        }
    }
    return 0;
}
运行结果:



/*问题描述:求满足条件n=a!+b!+c!的所有三位数n,其中a,b,c分别为n的百、十、个位数。
*问题输出:输出满足条件n=a!+b!+c!的所有三位数n.
*/
#include <stdio.h>
int main(){
    int n,a,b,c,i,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值