我正在尝试创建一个程序,给定一个输入值 n,输出质数列表。我编写了SieveEratosthenes函数:
- 生成了前n个整数中的质数列表
- 为生成的质数列表创建存储空间
- 返回所生成的质数数量。
以下是主要函数的代码:
以下是主要函数的代码:
int main(){
int n, i;
int *primes;
printf("Number that needs to be prime factorized: ");
scanf("%d", &n);
int num_primes;
num_primes = SieveEratosthenes(n, &primes);
printf("Generated a list of %d primes\n", num_primes);
printf("\n");
for (i = 0; i <= sizeof(num_primes) + 1; i++){
printf("%d", *primes++);
}
printf("\n");
return 0;
}
假设 n = 20;
我的输出是:
'生成了一个包含8个质数的列表'
2 3 5 7 11 13'
但我想要的输出应该是 '2 3 5 7 11 13 17 19'
我的筛子函数已经正确运行,但我无法在主函数中打印出完整的质数列表。
如果有任何帮助将不胜感激。谢谢!
primes[i]
而不是*primes++
。这样您可以保留对原始数组的指针。 - Benesh