鱼C论坛

 找回密码
 立即注册
查看: 1949|回复: 4

C语言

[复制链接]
发表于 2021-10-29 16:52:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
【问题描述】求指定区间[A,B]之间的素数和。比如求100-300之间的素数和
,其中,区间的上下界由用户输入,最后输出区间的素数和。

【输入形式】10 30        

【输出形式】10-30之间的素数和是112
【样例输入】10 30
【样例输出】10-30之间的素数和是112

【样例说明】输入的A和B以空格分开*/
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-10-29 17:03:45 | 显示全部楼层
本帖最后由 傻眼貓咪 于 2021-10-29 17:14 编辑

代码:
#include <stdio.h>
#include <stdbool.h>

bool isPrime(int n){
    if(n < 2) return false; // 当数字小于 2 肯定不是素数
    else if(n == 2) return true; // 数字 2 是素数
    for(int i = 2; i < (n>>1); i++) if(n%i == 0) return false; // 从 2 循环至 n/2,假设 n%i == 0 表示除了 1 和 自己还有其他因数,则不是素数
    return true; // 否则就是素数
}

int main()
{
    int A, B, sum = 0;
    scanf("%d %d", &A, &B);
    for(int i = A; i <= B; i++) if(isPrime(i)) sum += i;
    printf("%d", sum);
    return 0;
}
输入/输出:
10 30
112
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-29 18:12:53 | 显示全部楼层
傻眼貓咪 发表于 2021-10-29 17:03
代码:输入/输出:

还有其他C语言写法吗,不用第二行那个
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-29 18:39:11 | 显示全部楼层
柠檬Ccc 发表于 2021-10-29 18:12
还有其他C语言写法吗,不用第二行那个
#include <stdio.h>

int main()
{
    int A, B, sum = 0, isPrime;
    scanf("%d %d", &A, &B);
    for(int i = A; i <= B; i++){
        isPrime = 1;
        if(i < 2) isPrime = 0;
        else if(i == 2) isPrime = 1;
        else{
            for(int j = 2; j < (i>>1); j++){
                if(i%j == 0){
                    isPrime = 0;
                    break;
                }
            }
        }
        if(isPrime) sum += i;
    }
    printf("%d", sum);
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-29 18:52:13 | 显示全部楼层
#include <stdio.h>
#include <math.h>

int main()
{
    int A, B, i, j, flag, isPrime = 0, sum = 0;
    scanf("%d %d", &A, &B);
    for (i = A; i <= B; i++)
    {
        flag = (int)sqrt(i) + 1;
        for (j = 2; j <= flag; j++)
        {
            if (i % j == 0)
            {
                isPrime++;
            }
            if (isPrime > 0)
            {
                break;
            }
        }
        if (isPrime == 0)
        {
            sum += i;
        }
        else
        {
            isPrime = 0;
        }
    }
    printf("%d\n", sum);

    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-7-4 14:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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