我想用C语言编写一个程序,让用户输入2个数字a和b。
0 < a < INT_MAX
a < b < INT_MAX
该程序检查a和b之间有多少个素数,并将所有素数保存在动态数组中。
对于malloc
函数,我需要数组的大小,这意味着我必须先检查所有数字是否为质数才能获取数组的大小,然后使用malloc()
,再次检查所有数字以填充数组。有没有可能使此过程更快,而不是重复做同样的事情两次?
for (int i = a; i <= b; i++)
{
if (check_if_prime(i) == 0)
size++;
}
primze_numbers = malloc(size*sizeof(int));
int j = 0;
for (int i = a; i <= b; i++)
{
if(check_if_prime(i) == 0)
{
prime_numbers[j] = i;
j++;
}
}
malloc
分配内存,然后使用realloc
增加数组大小。 - Balu