鱼C论坛

 找回密码
 立即注册
查看: 1662|回复: 11

[已解决]10000以内素数的问题

[复制链接]
发表于 2022-4-24 19:51:29 | 显示全部楼层 |阅读模式

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

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

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

int main()

{
        int i;
        int j;
        int count;
        for(i = 2;i <= 10000;i += 1)
        {
                int count1 = 0;
                for(j = 2;j <= i;j += 1)
                {
                        if(i % j == 0)
                        {
                                count1 += 1;
                        }
                }
                if(count1 == 1)
                {
                        count += 1;
                }
        }
        printf("10000以内共有%d个素数!\n",count);


        return 0;
}
为啥这个程序跑出来的数是33995。是那一步出现的问题  ,我看了好几遍真是找不出来
最佳答案
2022-4-24 20:37:23
前面count定义的时候初始化一下,不然你在它定义之后先打印它的数值看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-4-24 20:01:28 | 显示全部楼层

回帖奖励 +2 鱼币

应该是 if(count1 == 0) 吧?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-24 20:04:10 | 显示全部楼层
傻眼貓咪 发表于 2022-4-24 20:01
应该是 if(count1 == 0) 吧?

素数是只能被本身和1整除的才算,除了1,也就是只有自己一个数能被整除,所以是1,如果是0就是没有一个能被整除。不存在
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-24 20:12:59 | 显示全部楼层
小鲸鱼Rx 发表于 2022-4-24 20:04
素数是只能被本身和1整除的才算,除了1,也就是只有自己一个数能被整除,所以是1,如果是0就是没有一个能 ...

哈哈哈哈,你开心就好
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-24 20:26:10 | 显示全部楼层
傻眼貓咪 发表于 2022-4-24 20:12
哈哈哈哈,你开心就好

我开心啥呀  我这明显不对呀,关键是哪里的问题呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-24 20:28:06 | 显示全部楼层
傻眼貓咪 发表于 2022-4-24 20:12
哈哈哈哈,你开心就好

改成0是32765也不对
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-24 20:36:06 | 显示全部楼层
傻眼貓咪 发表于 2022-4-24 20:12
哈哈哈哈,你开心就好

哈哈,他count1在这是作一个标志,前面循环条件是 j <= i,必有一次和自身取余,所以得是为1才行。不得不说确实是有自己的想法哈哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-24 20:37:23 | 显示全部楼层    本楼为最佳答案   
前面count定义的时候初始化一下,不然你在它定义之后先打印它的数值看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-24 20:38:36 | 显示全部楼层
小鲸鱼Rx 发表于 2022-4-24 20:28
改成0是32765也不对

首先,你先看看你的代码中 if (i % j == 0) 表示如果除了自己和 1 之外,还有其它数可以除整对吗?然后你写了 count1 += 1; 这时 count1 已经不是 0 了对吗?那么下面如果要判断 i 是否是素数,是不是要先确认 count1 还是不是保持 0 的状态啊?(表示 count1 没有被改变过)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-24 20:44:22 | 显示全部楼层
风车呼呼呼 发表于 2022-4-24 20:37
前面count定义的时候初始化一下,不然你在它定义之后先打印它的数值看看

就是这个,好了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-24 20:46:07 | 显示全部楼层
#include <stdio.h>

int main()
{
    int count = 0, isPrime;
    
    for(int num = 0; num < 1e4; num++) {
        isPrime = 1; // 命名时,尽量以自己最容易明白的名字命名!!!!
        if(num < 2) continue;
        else if(num == 2) {
            count++;
        }
        else{
            for(int n = 2; n < num; n++) {
                if(num%n == 0){
                    isPrime = 0; // 如果出现除整,则不是素数
                    break; // 无需继续
                }
            }
            if(isPrime) {
                count++;
            }
        }
    }
    
    printf("%d", count);

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

使用道具 举报

 楼主| 发表于 2022-4-24 20:48:16 | 显示全部楼层

感谢 大哥  我是个菜鸡,刚接触这东西,所以写的东西很不灵活,看你写的真是厉害很多
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-5 20:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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