+ -
当前位置:首页 → 问答吧 → 新手请帮忙

新手请帮忙

时间:2010-07-17

来源:互联网

用嵌套循环求1-100的素数,这是我在书上看到的一个程序.
#include <stdio.h>

int main(void)
{
        int i, j;
        for (i = 1; i <= 100; i++) {
                for (j = 2; j < i; j++)
                        if (i % j == 0)
                                break;
                if (j == i)
                        printf("%d\n", i);
        }
        return 0;
}
############################
第一个问题
谁能帮我注释一下这个程序.
这个求素数的有点看不懂.
i 从1开始取值,j 从2开始取值,这里的for (j = 2; j < i; j++).当i=1时,j=2,当i=2时,j=3.那是不是j大于都小于i 啊.那还怎么算啊.
第二.
还是看不懂.
if (j == i) 如果 j 和i的值相等就打印.i ,j和i的值相等的时候也不是素数啊.
第三.
return 0
我也看了很多.不太清楚.用不用return 有什么关系.
谁能帮我举个例子.什么时候必须return .不reture 有什么区别.
还有return 0 ,return1 .return2 .这些我怎么觉的都一样呢.好像这个返回值没什么用呀.

最近才学C.请大家帮帮忙.初学就会遇到弱智的问题.大家不要见笑.

作者: lylzgq   发布时间: 2010-07-17

素数:素数的概念,大于1,且只能被1和自身整除的数,如果能被其它数整除,则不可能是素数,在这个前提下再看代码,如:2,3.。。。

第一个问题:
代码是双层控制,
你指的是第二层,对于0,1,这两个数原本就是可以跳过的,不属于素数。
j 从2开始取值,这里的for (j = 2; j < i; j++).当i=1时,j=2,当i=2时,在这个时候,内循环应该就会跳出,因为j与i相同的时候,j<i不可能为真,也就不可能j=3.至少i=2为情况下,根本不可能有j=3。

这个最好是将基础语法看明白再来问。

第二个问题:内循环是用来判定是否为素数,如果存在一个数j能够整除i,则i不可能为素数,此时i是不可能为j的,在i==j的情况下,表示该数只能被1和其自身整除,这种情况下,咋个可能不是素数喃。

第三个问题:关于return, 可以多查点资料,return 0和return 1不是同一种情况。
对于函数应该存在一个return,根据函数原型定义的类型不同,需要return不同类型的值。
另外,0和1对应的是false and true,又怎么可能是一样的呢。

作者: magicrobot1984   发布时间: 2010-07-17

建议楼上的,多看一下C基础语法,多做实验再问,这样问,估计大部分的人都会懒得回答。

作者: magicrobot1984   发布时间: 2010-07-17