以下程序打印 1 到 10 之间的质数。
#include <stdio.h>
int* prime(int x,int y,int* range);
void main()
{
int *x,s=10;
int i=0;
x=prime(1,10,&s);
for(i=0;i<s;i++)
{
printf("%d\n",x[i]);
}
}
int* prime(int x,int y,int *range){
int num[100],i,j,flag,inc=0;
for(i=x;i<=y;i++)
{
flag=1;
for(j=2;j<=(i/2);j++)
{
if(i%j == 0)
flag=-1;
}
if(flag==1)
{
num[inc]=i;
inc++;
}
}
*range=inc;
//printf("$$%d$$",*range);
return num;
}
在上述情况下,输出为 1 2 3 5 0,但如果我们在素数函数中删除 printf 语句中的注释并按照正常的 printf 语句给出输出为 1 2 3 5 7 这怎么可能?这里有什么错误??
我使用的编译器是linux平台的GCC编译器。