刚接触C语言的学生,求高人指点下
#include <stdio.h>
#include <math.h>
int main()
{
int N,i,j,a[101];
scanf("%d",&N);
for(i=1;i<=N;i++)
a[i]=i;
for(i=2;i<sqrt(N);i++)
for(j=i+1;j<=N;j++)
{if(a[i]!=0&&a[j]!=0)
if(a[j]%a[i]==0)
a[j]=0;}
for(i=2;i<=N;i++)
{if(a[i]!=0)
{printf("%d\n",a[i]);}
}
return 0;
}
用筛法求之N内的素数。
好不容易编出来的程序,运行又可以,明明又对了,就是提交不上去。还有我就是不懂怎么可以学好c语言,有什么方法吗?
[解决办法]
数学思维不太缜密
第一步优化:
#include <stdio.h>#include <math.h>int main(){ int N,i,j; scanf("%d",&N); for(i=2;i<sqrt(N);i++) for(j=i+1;j<=N;j++) { if(i!=0&&j!=0) if(j%i==0) j=0; } for(i=2;i<=N;i++) { if(i!=0) { printf("%d\n", i); } } return 0;}