gpt4 book ai didi

通过与小于它的素数的整除来检查一个数是否为素数,如果在 C 中证明是素数,则将其存储在数组中

转载 作者:行者123 更新时间:2023-11-30 21:06:54 25 4
gpt4 key购买 nike

问题

如何创建一个可以在运行时需要时增加其长度的数组。

问题已解决

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
int *arr;
int count=0,i=3,j,n;
arr=(int*)malloc(count+1*sizeof(int)); /*here i set array size to 1*/
arr[count++]=2; /*stored 2 as array first element*/
printf("Find all prime numbers upto :: ");
scanf("%d",&n); /*n is the number up to which prime numbers are required*/
here:
{
while(i<=n) /*start with i=3*/
{
j=0;
while(arr[j]<=sqrt(i)) /*till array element value less than or equal to root of number under checking*/
{
if(i%arr[j]!=0) /*if remainder is not zero check*/
j++; /*divisibility with next array element*/
else
{
i++; /*if remainder is zero then*/
goto here; /*start checking for another number*/
}
}
printf("%d, ",arr[count-1]); /*printing the number which was proved to be prime last time*/
arr=(int *)realloc(arr,(count+1)*sizeof(int)); /*increasing array size by 1*/
arr[count++]=i; /*newly proved prime is stored as next array element*/
i++;
}
printf("%d, ",arr[count-1]); /*print last number proved to be prime*/
}
}

谢谢!堆栈溢出

这是我在这里用 C 语言提出的第一个问题,这个平台在解决我的问题、理解新概念和拥有正确的代码方面帮助了我很多。

最佳答案

你的逻辑是正确的,但效率不高,而且代码也不正确。

我对您的代码做了一些更改,现在它可以工作了,更改如下:

scanf("%d",n) ==> scanf("%d",&n);
while (j == count) ==> while (j <= count)

现在可以了!!

关于通过与小于它的素数的整除来检查一个数是否为素数,如果在 C 中证明是素数,则将其存储在数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46526536/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com