A529231559 发表于 2018-1-3 14:50:44

新手求助

#include <stdio.h>
#include <math.h>
void main()
{
        int i=101,a,k;
        for(;i<=200;i+2)
        {   k=sqrt(i);
                for(a=2;a<=k;a++)
                {
                        if(0==i%a)
                        {
                                break;
                        }
                        else continue;

                }
               
        if (a>=k)
                        printf("%d\n",i);
        }
}
题目是求100到200之间的素数并打印出来,自己写的代码如上。结果显示是不断打印101,调试的时候发现 i 值一直是101没变,没有实现i+2这个表达式,想问下问题出在哪

BngThea 发表于 2018-1-3 15:04:15

逻辑没问题,试试
改一下sqrt函数的形式
k= int(sqrt(double(i)));

A529231559 发表于 2018-1-3 18:56:58

BngThea 发表于 2018-1-3 15:04
逻辑没问题,试试
改一下sqrt函数的形式
k= int(sqrt(double(i)));

改了你说的函数,编译直接报错,变量改型了

BngThea 发表于 2018-1-3 19:05:48

A529231559 发表于 2018-1-3 18:56
改了你说的函数,编译直接报错,变量改型了

报错详细信息是什么?

A529231559 发表于 2018-1-4 23:02:48

BngThea 发表于 2018-1-3 19:05
报错详细信息是什么?

error C2059: syntax error : 'type'
warning C4552: '+' : operator has no effect; expected operator with side-effect
这两个

mgsky1 发表于 2018-1-4 23:20:59

首先逻辑是没有问题的,至于i没有变化是因为,我们以前习惯这么写,比如i++,这个表达式相当于i += 1 或 i = i + 1,是要重新赋值给i的,按照这个方法改一下就是正确的了
http://xxx.fishc.com/album/201801/04/231855dx0y2tyx2xkw9l5c.png

A529231559 发表于 2018-1-5 21:35:18

mgsky1 发表于 2018-1-4 23:20
首先逻辑是没有问题的,至于i没有变化是因为,我们以前习惯这么写,比如i++,这个表达式相当于i += 1 或 i...

这个可以了,谢谢
页: [1]
查看完整版本: 新手求助