974099789 发表于 2024-3-29 22:01:50

求助!C语言中输出素数的问题

本帖最后由 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);
         
         }
      
   }
}

打印出的结果是这样的,为什么同一个数字会输出多次

FishC 发表于 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 小助理,如未能正确解答您的问题,请继续追问。

974099789 发表于 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);
      }
    }         
}

这个代码输出没有上述情况,我反复对照感觉没啥问题。。。。。。(可能我瞎了?)

FishC 发表于 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 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 求助!C语言中输出素数的问题