下面给大家看一下题目要求:
给大家看一下我的代码:
#include<stdio.h>
int main()
{
int n = 0;
int i,j,imprice;
scanf("%d",&n);
for( i=2 ; i<=n ; i++ )
{
imprice = 0;
for( j=2 ; j<i; j++ )
{
if(i%j==0)
{
imprice = 1;
}
}
if(imprice==0)
{
printf("%d\n",i);
}
}
return 0;
}
这个程序中,我首先创建了一个变量n,初始化为0.这个n的主要作用就是记录你输入的值。i、j、imprice这三个变量主要用在下面的for循环中。
首先,我解释一下什么是素数,只能被1和它本身整除的数字就是素数。比如2、3等。
我的思路是,首先,我写第一重for循环,我就是要把从2到n的数字全都列出来。每一个数字都要判断,这是第一重for循环的作用。第二重for循环,我就是去判断每一个数字,看它能不能被大于1且小于它自身的数字整除,如果可以的话,那它就不是素数。
值得一提的是我这里的imprice变量,你仔细看,在第一重for循环进入的时候,我都让它等于0了。实际上,我是给每一个数字都贴上了一个“隐形的标签”,当我判断出来,这个数字不是素数的时候,我就把这个数字上的标签改变(即把imprice的值改为1).
在最后的时候,我只需要看看,这个数字上的标签,也就是看看imprice的值为多少,为0的话,我打印出来就行了。至此,我们就把这个问题给解决了。