鱼C论坛

 找回密码
 立即注册
查看: 500|回复: 3

[已解决]求助!C语言中输出素数的问题

[复制链接]
发表于 2024-3-29 22:01:50 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 974099789 于 2024-3-29 22:10 编辑

#include <stdio.h>
#include<math.h>
void main()

{
   int r=0,n,i,count;
   for(i=100;i<=200;i++)
   {
      count =0;
      for(n=2;n<=sqrt(i);n++)
      {
         if(i%n==0)
         {  count=1;
            break;
         }
      }
      if(count ==0)
         {r++;
         if(r%5==0)
          {printf("\n");
          }
          printf("%d ",i);
         
         }
      
   }
}

打印出的结果是这样的,为什么同一个数字会输出多次
最佳答案
2024-3-29 22:02:07
你好!要输出素数,首先需要明确什么是素数。素数是指只能被1和自身整除的整数,即除了1和它本身之外没有其他因数的数。

下面是一个可以输出某个范围内的素数的C语言代码示例:
#include <stdio.h>

int isPrime(int num)
{
    if(num <= 1)
        return 0; // 不是素数

    for(int i=2;i<num;i++)
    {
        if(num % i == 0)
            return 0; // 不是素数
    }

    return 1; // 是素数
}

int main()
{
    int start, end;

    printf("请输入要寻找素数的起始值和结束值: ");
    scanf("%d %d", &start, &end);

    printf("%d到%d的素数有:\n", start, end);
    for(int i=start; i<=end; i++)
    {
        if(isPrime(i))
            printf("%d ", i);
    }

    return 0;
}

在这个代码中,我们定义了一个`isPrime()`函数来判断某个数是否是素数。然后在`main()`函数中,我们可以输入一个起始值和结束值,程序会输出这个范围内的所有素数。

希望对你有帮助!如果还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
Screenshot_20240329_220106.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-3-29 22:02:07 | 显示全部楼层    本楼为最佳答案   
你好!要输出素数,首先需要明确什么是素数。素数是指只能被1和自身整除的整数,即除了1和它本身之外没有其他因数的数。

下面是一个可以输出某个范围内的素数的C语言代码示例:
#include <stdio.h>

int isPrime(int num)
{
    if(num <= 1)
        return 0; // 不是素数

    for(int i=2;i<num;i++)
    {
        if(num % i == 0)
            return 0; // 不是素数
    }

    return 1; // 是素数
}

int main()
{
    int start, end;

    printf("请输入要寻找素数的起始值和结束值: ");
    scanf("%d %d", &start, &end);

    printf("%d到%d的素数有:\n", start, end);
    for(int i=start; i<=end; i++)
    {
        if(isPrime(i))
            printf("%d ", i);
    }

    return 0;
}

在这个代码中,我们定义了一个`isPrime()`函数来判断某个数是否是素数。然后在`main()`函数中,我们可以输入一个起始值和结束值,程序会输出这个范围内的所有素数。

希望对你有帮助!如果还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-29 22:09:34 | 显示全部楼层
顺带一提,我用ChatGpt抓虫后结果是这样的:
#include <stdio.h>
#include <math.h>

void main() {
    int r = 0, n, i, count;
    for (i = 100; i <= 200; i++) {
        count = 0; // 初始化 count
        for (n = 2; n <= sqrt(i); n++) {
            if (i % n == 0) {
                count = 1; // 如果能够被整除,count 设为 1
                break;
            }
        }
        if (count == 0) { // 如果 count 仍然为 0,则是素数
            r++;
            if (r % 5 == 0) {
                printf("\n");
            }
            printf("%d ", i);
        }
    }         
}

这个代码输出没有上述情况,我反复对照感觉没啥问题。。。。。。(可能我瞎了?)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-29 22:09:49 | 显示全部楼层
974099789 发表于 2024-03-29 22:09
顺带一提,我用ChatGpt抓虫后结果是这样的:
#includ ...


哦,抱歉看到这个问题了。ChatGPT在转换代码时可能会出现一些问题,导致格式混乱。我给你重新整理一下代码:#include <stdio.h>

int isPrime(int num){
    if(num <= 1){
        return 0;
    }
   
    for(int i=2; i<=num/2; i++){
        if(num % i == 0){
            return 0;
        }
    }
   
    return 1;
}

int main() {
    int n;

    printf("请输入一个整数n:");
    scanf("%d", &n);

    printf("从2到%d的所有素数为:\n", n);
    for(int i=2; i<=n; i++){
        if(isPrime(i)){
            printf("%d ", i);
        }
    }

    return 0;
}
这段代码定义了一个函数isPrime,用于判断一个数是否为素数。然后在主函数中,首先获取用户输入的一个整数n,然后遍历从2到n的所有数字,如果某个数是素数,则输出它。最后返回0表示程序执行成功。请尝试使用这段代码,如果还有其他问题或疑问,请随时提问!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-23 20:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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