在vc6.0中正常运行,在c中却不成功!
我想编一个求素数的程序。功能是等待输入起始和末尾的数字,然后输出其间的素数,这是源程序。程序1是我从网上找到的一个程序,2是我自己根据1编的,基本上是一模一样,可第一个程序就可以在win-tc中运行成功,第2个却不可以,只是黑窗口闪一下,并且窗口上好像什么输出也没有,我把我自己编的那个程序即程序2放到vc6.0中编译结果成功运行,这是什么原因呢?下面分别是我从网上复制的源程序1和我自己编写的程序2:1
#include<stdio.h>
int main()
{
int n1,nm,i,j,flag,count=0;
do{
printf("Input START and END=?");
scanf("%d%d",&n1,&nm); /*输入求素数的范围*/
}while(!(n1>0&&n1<nm)); /*输入正确的范围*/
printf("...........PRIME TABLE(%d--%d)............\n",n1,nm);
if(n1==1||n1==2) /*处理素数2*/
{
printf("%4d",2);
n1=3;count++;
}
for(i=n1;i<=nm;i++) /*判定指定范围内的整数是否为素数*/
{
if(!(i%2))continue;
for(flag=1,j=3;flag&&j<i/2;j+=2)
/*判定能否被从3到整数的一半中的某一数所整除*/
if(!(i%j))flag=0; /*若能整除则不是素数*/
if(flag) printf(++count%15?"%4d":"%4d\n",i);
}
getch();
}
2.
#include<stdio.h>
main()
{
int i,j,flag,s,e,count=0;
printf("Input start and end:");
scanf("%d%d",&s,&e);
printf("..................prime table...............");
if(s==1||s==2)
{
printf("\n%4d",2);
s=3;count++;
}
for(i=s;i<=e;i++)
{
if(!(i%2)) continue;
for(flag=1,j=3;flag&&j<i/2;j+=2)
if(!(i%j)) flag=0;
if(flag)
printf("\n%4d",i);
}
getch();
}
请高手指点一下!在这先谢了!