当前位置: 代码迷 >> C语言 >> 我的循环怎么不执行??
  详细解决方案

我的循环怎么不执行??

热度:144   发布时间:2006-11-23 18:14:23.0
我的循环怎么不执行??

我为什么用这个循环不行??求一个偶数等于素数之和.打印出来.
#include<stdio.h>
#include<math.h>
main()
{
int i,j,n,j1,i1;

printf("input the n=");
scanf("%d",&n);

if(n%2==1)
printf("the number is wrong\n");
for(i=1;i<=n/2;i++)
{
j=n-i;

for(j1=2;j<=sqrt(j);j1++)
{
for(i1=2; i1<=sqrt(n/2); i1++)
{ if (j%j1==0 && i%i1==0)

printf("j=%d, i=%d\n", j, i);
}
}
}


}

搜索更多相关的解决方案: include  number  wrong  color  

----------------解决方案--------------------------------------------------------
感觉循环有点错误.
应该要分开来判断i和n-i,看他们是不是素数.i不是1开始,因为1不是素数.
----------------解决方案--------------------------------------------------------
以下是引用wandison在2006-11-23 18:14:23的发言:

我为什么用这个循环不行??求一个偶数等于素数之和.打印出来.
#include<stdio.h>
#include<math.h>
main()
{
int i,j,n,j1,i1;

printf("input the n=");
scanf("%d",&n);

if(n%2==1)
printf("the number is wrong\n");
for(i=1;i<=n/2;i++)
{
j=n-i;

for(j1=2;j<=sqrt(j);j1++)
{
for(i1=2; i1<=sqrt(n/2); i1++)
{ if (j%j1==0 && i%i1==0)

printf("j=%d, i=%d\n", j, i);
}
}
}


}


----------------解决方案--------------------------------------------------------

为什么换,楼上?解释下,谢谢


----------------解决方案--------------------------------------------------------

以下是引用wandison在2006-11-23 18:14:23的发言:

我为什么用这个循环不行??求一个偶数等于素数之和.打印出来.
#include<stdio.h>
#include<math.h>
main()
{
int i,j,n,j1,i1;

printf("input the n=");
scanf("%d",&n);

if(n%2==1)
printf("the number is wrong\n");
for(i=1;i<=n/2;i++)
{
j=n-i;

for(j1=2;j1<=sqrt(j);j1++)
{
for(i1=2; i1<=sqrt(n/2); i1++)
{ if (j%j1==0 && i%i1==0)

printf("j=%d, i=%d\n", j, i);
}
}
}


----------------解决方案--------------------------------------------------------
有这么几处错误:
以下是引用wandison在2006-11-23 18:14:23的发言:

我为什么用这个循环不行??求一个偶数等于素数之和.打印出来.
#include<stdio.h>
#include<math.h>
main()
{
int i,j,n,j1,i1;

printf("input the n=");
scanf("%d",&n);

if(n%2==1)
printf("the number is wrong\n");
for(i=1;i<=n/2;i++) /*i 不能从1开始,应该从2开始.另,以下程序最好放在 else{ }中*/
{
j=n-i;

for(j1=2;j<=sqrt(j);j1++) /* 条件语句中的 j 应该换成 j1 */
{
for(i1=2; i1<=sqrt(n/2); i1++)
{ if (j%j1==0 && i%i1==0) /*这句完全错误,如果条件满足的话,i, j就是偶数了*/

printf("j=%d, i=%d\n", j, i);
}
}
}


}

下面是我改了以后的程序:

#include<stdio.h>
#include<math.h>
int main()
{
int i,j,n,j1,i1,k=1;

printf("input the n=");
scanf("%d",&n);

if(n%2==1)
printf("the number is wrong\n");

else
for(i=2;i<=n/2;k=1,i++)
{
j=n-i;
for(j1=2;j1<=sqrt(j);j1++)
{
for(i1=2; i1<=sqrt(n/2); i1++)
if(j%j1==0 || i%i1==0)
{
k=0;
break;
}

}
if(k==1)printf("j=%d, i=%d\n", j, i);
}
return 0;
}

[此贴子已经被作者于2006-11-24 18:49:54编辑过]


----------------解决方案--------------------------------------------------------

谢谢大家,我懂了,特别是hzlqzh2006给我讲的那么详细.真的很感谢.我是新手请大家以后多多指教.谢谢!!


----------------解决方案--------------------------------------------------------
  相关解决方案