c - 我的 Checkprime.c 程序有什么问题?

标签 c

我正在尝试编写一个程序来检查给定数字是否为素数。但是,我的程序只给了我 2 时间表,我不知道为什么。

这是我的主要类(class):

#include <stdio.h>
#include "defs.h"
#include "checkprime.c"


int Prime[MaxPrimes];  

int main()
{ 
  int UpperBound;
  int N;
  int *ba = &UpperBound;

  printf("enter upper bound\n");
  scanf("%d",ba);

  Prime[2] = 1;

  for (N = 3; N <= *ba; N+= 2)
  {
    CheckPrime(N);
    if (Prime[N]== 1) printf("%d is a prime\n",N);
  }
}

这是我的 checkprime.c

#include "defs.h"
#include "externs.h"


int CheckPrime(int K)
{

  int J;


  J = 2;

  while (1)  
  {
    if (Prime[J] == 1)
    {
      if (K % J == 0)  
      {
         Prime[K] = 0;
         return 0;
      }
      J++; 
    } 
    break;
  }   

  Prime[K] = 1; 
}

最佳答案

CheckPrime 在循环退出条件方面存在一些问题。请改用以下内容:

int CheckPrime(int K)
{
    int J;

    for (J=2; J*J <= K; J++) {
        if (Prime[J] == 1) {
            if (K % J == 0) {
                Prime[K] = 0;
                return 0;
            }
        }
    }

    Prime[K] = 1;
    return 1;
}

它的其余部分应该适用于此更改。

关于c - 我的 Checkprime.c 程序有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35486705/

相关文章:

从一个字符指针复制到另一个字符指针

c - 将二维字符数组与函数一起使用

c - 在 C 中将整数分类/映射到各种类别的优雅方法是什么?

c - 尝试添加我自己的头文件,就像使用 gcc 将 C 库头文件添加到包含 MAIN 的程序中一样

c - 有什么方法可以修改此函数,以便它删除数组中的前一个元素 - C

将手动输入的字符串与用户输入的字符串进行比较

c - 递归函数在参数不为 NULL 时传递 NULL 指针

C 链表 : How to insert node at front

c - 无法找出我的代码中的逻辑错误

c - 将输入文件读入结构并对数据进行排序?