c程序数组举例4

来源:百度知道 编辑:UC知道 时间:2024/05/28 18:58:45
题目:用筛选法求100之内的素数。
程序:
#include <stdio.h>
#include <math.h>
main()
{int i,j,n,a[101];
for(i=1;i<=100;i++)
a[i]=i;
a[1]=0;
for(i=2;i<sqrt(100);i++)
for(j=i+1;j<=100;j++)
{if(a[i]!=0 && a[j]!=0)
if(a[j]%a[i]==0)
a[j]=0;}
printf("\n");
for(i=1,n=0;i<=100;i++)
{if(a[i]!=0)
{printf("%5d",a[i]);
n++;}
if(n==10)
{printf("\n");
n=0;}
printf("\n");
}
提问:(1)
for(i=1,n=0;i<=100;i++)
{if(a[i]!=0)
{printf("%5d",a[i]);
n++;}
没有看懂到底是什么意思?请高手们给我解释解释。
提问:(2){if(a[i]!=0 && a[j]!=0)
if(a[j]%a[i]==0)
a[j]=0;}
没有看懂到底是什么意思?请高手们给我解释解释。
提问:(3)
if(a[j]%a[i]==0)为什么是a[j]%a[i]呢?而不是a[i]%a[j]呢?给我可以仔细解释解释吗?

1.for(i=2;i<sqrt(100);i++)
for(j=i+1;j<=100;j++)
{if(a[i]!=0 && a[j]!=0)
if(a[j]%a[i]==0)
a[j]=0;}

是将100亿内能被1-9整除的数赋值0,都是非质数,不能的都是质数

if(a[i]!=0)就是判断是不是非质数

2。x/y 两个非0的整数相除,没有余数, 就表示x不是质数 ,非质数的赋值0

3
a[i]的范围为 2到sqrt(100),也就是10 ,你应该知道,要求一个数以内的素数,只要判断SQRT(INT )内的数能不能整除他

a[j]的范围为1-100,是整个数组的范围