一个小小的问题
这个程序的功能是输入一个数字,并求其因式分解,例如输入90,输出90=2*3*3*5,但是我有一个小小的疑惑,输入90,最后会变成n=1,i=5,然后n不等于i一直成立,为什么不会死循环#include <stdio.h>
int main(void)
{
int i,n;
printf ("请输入一个数\n");
scanf ("%d",&n);
for (i=2;i<=n;i++)
{
if (n%i==0)
{
printf("%d=%d",n,i);
break;
}
}
n=n/i;
while (n!=i)
{
for(i=2;i<=n;i++)
{
if (n%i==0)
{
printf ("*%d",i);
n=n/i;
break;
}
}
}
if (n!=1)
printf("*%d",n);
}
这不已经死循环了吗。。 葛明佳 发表于 2020-11-25 22:00
这不已经死循环了吗。。
但是他是满足while括号内的循环条件的,只是while内的语句不执行,这样系统会自动跳出while吗 本帖最后由 jackz007 于 2020-11-25 22:12 编辑
#include <stdio.h>
int main(void)
{
int f, i , n ;
printf ("请输入一个数\n") ;
scanf ("%d" , & n) ;
for(f = 0 , i = 2 ; i * i < n + 1 ; i ++)
{
if (n % i == 0)
{
printf("%d = %d" , n , i) ;
f = 1 ;
break ;
}
}
if(! f) printf("%d is a prime.\n" , n) ;
while(f)
{
for(f = 0 , n = n / i , i = 2 ; i * i < n + 1 ; i ++) {
if (n % i == 0)
{
printf (" * %d" , i) ;
f = 1 ;
break ;
}
}
if(! f) printf(" * %d" , n) ;
}
} 2767184930 发表于 2020-11-25 22:05
但是他是满足while括号内的循环条件的,只是while内的语句不执行,这样系统会自动跳出while吗
当然不会了,只要while()括号里面不为零就会进入循环的 jackz007 发表于 2020-11-25 22:07
#include <stdio.h>
int main(void)
{
int i, n;
printf("请输入一个数\n");
scanf("%d", &n);
for (i = 2;i <= n;i++)
{
if (n%i == 0)
{
printf("%d=%d", n, i);
break;
}
}
n = n / i;
while (n >= i) // 此处将不等于改为大于,就不会死循环了
{
for (i = 2;i <= n;i++)
{
if (n%i == 0)
{
printf("*%d", i);
n = n / i;
break;
}
}
}
if (n != 1)
printf("*%d", n);
printf("\n");
} 我晕,又点错对象了
页:
[1]