如何使用C中的for循环找到给定数字的最接近素数?

欢呼

我确实尝试过,但仍然不知道我的代码出了什么问题。

#include <stdio.h>

int main()
{
  int n;
  scanf("%d", &n);

  int minus, i, judge;
  for (minus = 0, judge = 1; judge == 1; minus++, n -= minus) {
    for (i = 2; i * i < n; i++) {
      if (n % i == 0)
        judge = 1;
      else judge = 0;
    }
    if (judge == 1)
      continue;
    else break;
  }
  printf("%d\n", n);
  return 0;
}

当我输入143时,输出为143而不是139。但是,当我输入11时,输出为正确答案11。

chqrlie

循环测试不正确: for (i = 2; i * i < n; i++)

如果n是素数的平方,则循环将在找到因数之前停止。

您应该使用i * i <= ni <= n / i

此外,n随着每次迭代递减值的增加,您不会列举所有数字

还要注意,循环不会找到最接近的素数n,而是找到小于的最大素数n,这并不完全相同。

这是修改后的版本:

#include <limits.h>
#include <stdio.h>

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

int main() {
    int n;

    if (scanf("%d", &n) != 1)
        return 1;

    if (n <= 2) {
        printf("2\n");
    } else {
        for (i = 0;; i++) {
            if (isPrime(n - i))
                printf("%d\n", n - i);
                break;
            }
            if (n <= INT_MAX - i && isPrime(n + i))
                printf("%d\n", n + i);
                break;
            }
        }
    }
    return 0;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在距x的距离处找到与给定数字最接近的n个数字?

来自分类Dev

如何在距x的距离处找到与给定数字最接近的n个数字?

来自分类Dev

如何在数组中找到最接近给定数字的值?

来自分类Dev

排序最接近给定数字的数字

来自分类Dev

如何在数组中查找最接近给定数字的值

来自分类Dev

在列表中找到与给定数字最接近的较小和较大值的最佳方法是什么

来自分类Dev

如何找出总和最接近给定数字的给定向量的最佳组合

来自分类Dev

如何使用熊猫将给定数字四舍五入到最接近的指定倍数?

来自分类Dev

查找与给定数字最接近的k个数字

来自分类Dev

查找与给定数字最接近的数字总和

来自分类Dev

获取列表中某个给定数字的 3 个最接近的值?

来自分类Dev

给定数字的C最大素数

来自分类Dev

如何找到给定点的最接近点(在不同点列表中的点为(x,y))?

来自分类Dev

如何找到与给定浮点数最接近的行

来自分类Dev

如何从列表中找到最接近给定Rect的Rect?

来自分类Dev

使用python中的递归找到给定数字的基值

来自分类Dev

舍入到给定数字数组中最接近的数字

来自分类Dev

如何在各列中找到最接近的数字?

来自分类Dev

如何找到最接近某个数字的数组元素?

来自分类Dev

如何在 Python 中找到最接近数字的值?

来自分类Dev

如何找到给定数字的范围?

来自分类Dev

如何找到最接近的<i>?

来自分类Dev

如何找到最接近的元音?

来自分类Dev

在字典C#中查找与给定值最接近的值

来自分类Dev

从向量中找到最接近的数字索引

来自分类Dev

在不使用数组或循环的情况下,找到五个给定数字中第三大数字的最快方法?

来自分类Dev

如何使用属性过滤器找到最接近的?

来自分类Dev

如何使用lodash从数组中获取最接近目标的前两个数字?

来自分类Dev

matlab如何用最接近的邻居替换列表中的数字

Related 相关文章

  1. 1

    如何在距x的距离处找到与给定数字最接近的n个数字?

  2. 2

    如何在距x的距离处找到与给定数字最接近的n个数字?

  3. 3

    如何在数组中找到最接近给定数字的值?

  4. 4

    排序最接近给定数字的数字

  5. 5

    如何在数组中查找最接近给定数字的值

  6. 6

    在列表中找到与给定数字最接近的较小和较大值的最佳方法是什么

  7. 7

    如何找出总和最接近给定数字的给定向量的最佳组合

  8. 8

    如何使用熊猫将给定数字四舍五入到最接近的指定倍数?

  9. 9

    查找与给定数字最接近的k个数字

  10. 10

    查找与给定数字最接近的数字总和

  11. 11

    获取列表中某个给定数字的 3 个最接近的值?

  12. 12

    给定数字的C最大素数

  13. 13

    如何找到给定点的最接近点(在不同点列表中的点为(x,y))?

  14. 14

    如何找到与给定浮点数最接近的行

  15. 15

    如何从列表中找到最接近给定Rect的Rect?

  16. 16

    使用python中的递归找到给定数字的基值

  17. 17

    舍入到给定数字数组中最接近的数字

  18. 18

    如何在各列中找到最接近的数字?

  19. 19

    如何找到最接近某个数字的数组元素?

  20. 20

    如何在 Python 中找到最接近数字的值?

  21. 21

    如何找到给定数字的范围?

  22. 22

    如何找到最接近的<i>?

  23. 23

    如何找到最接近的元音?

  24. 24

    在字典C#中查找与给定值最接近的值

  25. 25

    从向量中找到最接近的数字索引

  26. 26

    在不使用数组或循环的情况下,找到五个给定数字中第三大数字的最快方法?

  27. 27

    如何使用属性过滤器找到最接近的?

  28. 28

    如何使用lodash从数组中获取最接近目标的前两个数字?

  29. 29

    matlab如何用最接近的邻居替换列表中的数字

热门标签

归档