gpt4 book ai didi

c - 划分两个数组元素

转载 作者:行者123 更新时间:2023-11-30 18:07:30 24 4
gpt4 key购买 nike

main()
{
int prime_array[2339],prime1_count=0,mul1_count=0;
int i, prime, lim_up, lim_low, n,j=0;
int mul,count=0;
int mul_count[65026]={0},number[7096];
printf("\n ENTER THE LOWER LIMIT…: ");
scanf("%d", &lim_low);
printf("\n ENTER THE UPPER LIMIT…: ");
scanf("%d", &lim_up);

for(n=lim_low+1; n<lim_up; n++)
{
prime = 1;
for(i=2; i<n; i++)
if(n%i == 0)
{
prime = 0;
break;
}
if(prime)
{
prime_array[j]=n;
j++;
}
}

for(i=1;i<=255;i++)
{
for(j=1;j<=255;j++)
{
mul = j*i;
mul_count[mul]++;
}
}

for(i=1;i<=65025;i++)
if( mul_count[i]!=2 && mul_count[i]!=0 )
{
number[count]=i;
count++;
}

for(prime1_count=0;prime1_count<2339;prime1_count++)
{
printf("\nprime number used is:%d",prime_array[prime1_count]);
for(mul1_count=0;mul1_count<7096;mul1_count++)
{
printf("\n%d\t",number[mul1_count] % prime_array[prime1_count]);
}
}
}

我想求 (number[mul1_count] % prime_array[prime1_count] ) 的模,但我得到的输出是错误的。这里有什么错误。质数应在 40000 到 65025 范围内。我应该在此处进行哪些更改?

最佳答案

我真的不知道你想做什么,但是当运行你的程序时,我得到一个 Floating Point Exception那是因为 number[mul1_count] % prime_array[prime1_count]prime_array[prime1_count]0

包裹你的内心for循环 if(prime_array[prime1_count] != 0)

for(prime1_count=0;prime1_count<2339;prime1_count++)
{
if(prime_array[prime1_count] != 0)
{
printf("\nprime number used is:%d",prime_array[prime1_count]);
for(mul1_count=0;mul1_count<7096;mul1_count++)
{
printf("\n%d\t",number[mul1_count] % prime_array[prime1_count]);
}
}
}

最好也尝试解释一下您想做什么、您期望什么、您得到什么等等......

编辑:另外,作为旁注。您应该稍微改变计算素数的循环。原因是您没有记录计算了多少个素数。然后你 for(prime1_count=0;prime1_count<2339;prime1_count++)迭代整个prime_array[]

想象一下你只计算了5个素数的情况,这意味着剩下的数组就剩下什么了。没有理由进行额外的计算,撇开 prime_array 没有在代码中的任何地方初始化为零这意味着它(据我所知)包含垃圾值,在算法中没有分配素数的索引中。这意味着 if(prime_array[prime1_count] != 0)如果您认为那里存在垃圾值,则可能会失败。

初始化 prime_array[2339] = { 0 };

我会这样做:

int number_of_primes=0;
for(n=lim_low+1; n<lim_up; n++)
{
prime = 1;
for(i=2; i<n; i++)
if(n%i == 0)
{
prime = 0;
break;
}
if(prime)
{
if(number_of_primes < 2338)
{
prime_array[number_of_primes]=n;
number_of_primes++;
}else
{
break;
}
}
}

...

for(prime1_count=0 ; prime1_count < number_of_primes+1 ; prime1_count++)
{
printf("\nprime number used is:%d",prime_array[prime1_count]);
for(mul1_count=0;mul1_count<7096;mul1_count++)
{
printf("\n%d\t",number[mul1_count] % prime_array[prime1_count]);
}
}

关于c - 划分两个数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4525778/

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