动态地将素数存储在一维数组中

阿什维尼阿布舍克

我正在制作一个程序,它将给定范围内的素数动态存储到一维数组中。我已经阅读了关于 c 中动态内存分配的内容,但我不知道我的代码有什么问题。最初我定义了一个“isprime”函数,它检查一个数是否是素数,如果这个数是素数,它返回 1。之后我使用一个 for 循环,它有助于在数组中存储素数。在 for 循环中,我使用 if 语句检查用户输入的范围内的数字是否为素数,如果是素数,则将其存储在数组 p 中,使用 malloc 为其动态分配内存。但是在数组 p 中没有存储素数,而是存储了垃圾值,我不知道为什么素数没有存储在我的数组中?

#include<stdio.h>
#include<math.h>
int isprime(int n)
{
    int i;
    for(i=2;i<sqrt(n);i++)
    {
        if(n%i==0)
        {
            return 0;
        }
    }
    return 1;
}
main()
{
    int *p,i,n,j=1;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        if(isprime(i)&&i!=0&&i!=1)
        {
            p=malloc(j*sizeof(int));//Memory allocation for p should increase as more prime no.s are stored
            p[j-1]=i;
            j++;

        }
    }
    printf("%d\n",p[1]);//garbage value is printed instead of any prime no.
}
让-弗朗索瓦·法布尔

malloc 每次循环都会返回一个新的内存区域,丢失以前的数据。

你需要realloc,而不是

 int *p = NULL;  // initialize to NULL

并在循环中:

        p=realloc(p,j*sizeof(int));

所以要么p保留地址并增加内存,要么p复制以前的数据p发布新的数据无论哪种方式,它对你来说都是透明的。

(第一次,如pNULL,它的作用就像malloc

请注意,realloc在每次迭代时效率很低最好少调整大小,并记录容量和实际数据长度。例如像这样:

在里面:

  int growth = 100;
  int capacity = 0;
  int *p = NULL;

并在循环中:

  if (j>=capacity)
  {
      capacity += growth;
      p = realloc(p,capacity*sizeof(int));
  }

旁白:正如评论所指出的,对于完整工作的答案,在检查素数时不要省略最后一个值,否则您会检测到完美的平方作为素数。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

动态地将li id存储在数组中

来自分类Dev

将数据存储在一维数组中

来自分类Dev

如何动态地将新数组添加到现有数组中

来自分类Dev

如何动态地将继承的属性添加到EF数据存储中?

来自分类Dev

动态地将字段设置为extjs数据存储

来自分类Dev

动态地将字段设置为extjs数据存储

来自分类Dev

我如何动态地将分隔符放入jquery的数组中?

来自分类Dev

动态地将新属性添加到Node中的现有JSON数组

来自分类Dev

如何动态地将数组绑定到JComboBox?

来自分类Dev

动态地将元素推到数组的末尾

来自分类Dev

如何动态地将div放在两行内但在一列中?

来自分类Dev

如何动态地将一个类添加到Selectize选项中?

来自分类Dev

EXTJS将一个组件与其他组件动态地放入容器中

来自分类Dev

动态地将三张卡片水平排列在一行中

来自分类Dev

如何使用codeigniter中的会话动态地将新数组添加到现有数组中

来自分类Dev

SQL动态地将数据从数据库存储到另一个数据库

来自分类Dev

Angular - 如何动态地以角度创建二维数组?

来自分类Dev

动态地为二维字符数组分配内存

来自分类Dev

动态地将from动作值放在Jquery中?

来自分类Dev

在MySQL中动态地将行转换为列

来自分类Dev

Javascript动态地将新的数组对象添加到现有数组中(带键)?

来自分类Dev

Javascript动态地将新的数组对象添加到现有的数组中(带键)?

来自分类Dev

动态地在字典中设置一个值

来自分类Dev

动态地在dict中设置一个值

来自分类Dev

动态地,有条件地将数据集分为多个数组或存储有关拆分位置的信息

来自分类Dev

如何在PHP中动态地将数组插入文本文件(序列化的内容)

来自分类Dev

Android:如何创建一个锯齿状的数组,动态地从数据库中获取值

来自分类Dev

在Angular中,如何动态地将某些单词包装在另一个html元素中?

来自分类Dev

如何统一确定一维数组中的元素数?

Related 相关文章

  1. 1

    动态地将li id存储在数组中

  2. 2

    将数据存储在一维数组中

  3. 3

    如何动态地将新数组添加到现有数组中

  4. 4

    如何动态地将继承的属性添加到EF数据存储中?

  5. 5

    动态地将字段设置为extjs数据存储

  6. 6

    动态地将字段设置为extjs数据存储

  7. 7

    我如何动态地将分隔符放入jquery的数组中?

  8. 8

    动态地将新属性添加到Node中的现有JSON数组

  9. 9

    如何动态地将数组绑定到JComboBox?

  10. 10

    动态地将元素推到数组的末尾

  11. 11

    如何动态地将div放在两行内但在一列中?

  12. 12

    如何动态地将一个类添加到Selectize选项中?

  13. 13

    EXTJS将一个组件与其他组件动态地放入容器中

  14. 14

    动态地将三张卡片水平排列在一行中

  15. 15

    如何使用codeigniter中的会话动态地将新数组添加到现有数组中

  16. 16

    SQL动态地将数据从数据库存储到另一个数据库

  17. 17

    Angular - 如何动态地以角度创建二维数组?

  18. 18

    动态地为二维字符数组分配内存

  19. 19

    动态地将from动作值放在Jquery中?

  20. 20

    在MySQL中动态地将行转换为列

  21. 21

    Javascript动态地将新的数组对象添加到现有数组中(带键)?

  22. 22

    Javascript动态地将新的数组对象添加到现有的数组中(带键)?

  23. 23

    动态地在字典中设置一个值

  24. 24

    动态地在dict中设置一个值

  25. 25

    动态地,有条件地将数据集分为多个数组或存储有关拆分位置的信息

  26. 26

    如何在PHP中动态地将数组插入文本文件(序列化的内容)

  27. 27

    Android:如何创建一个锯齿状的数组,动态地从数据库中获取值

  28. 28

    在Angular中,如何动态地将某些单词包装在另一个html元素中?

  29. 29

    如何统一确定一维数组中的元素数?

热门标签

归档