[问题] While新手问题

楼主: q10242 (黑田祐司)   2015-04-06 18:52:15
开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
DevC++
我现在在解高中生解题系统
里面的质数问题
为了要判断输入的数字是否为质数
并且有可能有两万个数字要判断
为了加快速度 因此有建表机制
逻辑:先判断表内的数字有没有能整除的 有就不是质数
如果表内没有 再从1到X-1都整除一次看看 如果有能整除的 就不是质数
如果以上两个条件都不行 那就是质数 将这个质数存到prime阵列里面
以后就可以拿出来比对
喂入的资料(Input):
各种自己随便乱打的整数
预期的正确结果(Expected Output):
如果是质数应该就会有质数出来
不是质数就会有非质数出来
错误结果(Wrong Output):
输入之后毫无反应
程式码(Code):(请善用置底文网页, 记得排版)
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int prime[20000];
int number;
int i=0;
int j;
while(1);
{
scanf("%i",&number);
for (j=0;j<=i;j++)
{
if(number%prime[j]==0)
{
printf("非质数");
continue;
}
}
for (j=2;j<=number;j++)
{
if(number%j==0)
{
printf("非质数");
continue;
}
}
printf("质数");
prime[i]=number;
i++;
}
return 0;
}
补充说明(Supplement):
我认为可能是我while循环里面的scanf出问题
只是不知道该怎么改
作者: EdisonX (卡卡兽)   2015-04-06 18:54:00
while(1);
作者: sos0214 (kaleidoscope)   2015-04-06 18:57:00
%i应该要改成%d 另外i这样值是0请忽略我说的XD 是我没看过%i的format
作者: ChiuTW (Chiu)   2015-04-06 19:13:00
你的 i 不是一直都是 0 吗 XD我也搞错,不要理我上面写的 XD但是 while(1); 啊XD
作者: bibo9901 (function(){})()   2015-04-06 19:37:00
while( scanf(..) != EOF )
作者: x000032001 (版废了该走了)   2015-04-06 22:00:00
建表用筛法跑完再读inputfor (j=2;j<=number;j++) 你最后会跟自己除
作者: narukaze (Pt)   2015-04-07 21:54:00
你的continue用法, 即使确定这数是非质数,最后仍然会跑到倒数三行, 所以...会有问题.另外, 依照你的叙述, prime[]内应该是i吧?你参考看看吧 http://i.imgur.com/FMTYRT2.png

Links booklink

Contact Us: admin [ a t ] ucptt.com