#include<stdlib.h>
#include<stdio.h>
int main()
{
int n,i;
printf("请输入一个正整数!\n");
scanf("%d",&n);
printf("%d=",n);
for(i=2;i<n;i++)

展开全部
收起
6回答
提交回答
  • 至过去的我

    2044人对此回答表示赞同

    我是未来的你,你现在是不是在年找寻小程序答案。你不要感觉诧异,给你来信原因,就是让你不在后悔。今天去学习如何推广小程序,相信......点击查看更多>
    发布于
  • Yogi

    18人对此回答表示赞同

    这里也就是个双重循环的条件问题.当i!=n的时候就执行里面的循环,就是执行if......else....语句。当i++执行到,i=n的时候里面的循环就结束。列入你输一个11进去,它输出11=11,就是i++,i=11的时候跳出了循环,直接输出了11.
    还有也不是一定要用while,用for语句也是可以的 for(;i!=n;)
    展开
    18
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • 马栏山壮士

    18人对此回答表示赞同

    首先while循环是为了保证一个数有可以有几个相同的质因数,例如8=2*2*2;
    如果while(i!=n)中i!=n条件改成单纯的while(true)或其他,那么运行到这句n=n/i;时,n=1;
    结果把 1给输出,但是我们知道质因数不包括1
    展开
    18
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • Alexander

    10人对此回答表示赞同

    按说没必要,因为n=n/i;
    n是在不停的变化当中
    展开
    10
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • Mia

    9人对此回答表示赞同

    //因为当除数为 i 时,不一定只能除 n 一次,可能要除好几次,所以要在 i 时找出它的所有倍数
    例如:n=100,i=2时,除一次之后,n=50,但是n还可以再除一次2变为25,但是如果没有
    while(i!=n)语句,i 在for 循环中增为3 ,就少一个质因子 2,同样当 i 增到 5 时也有两个
    #include<stdlib.h>
    #include<stdio.h>
    int main()
    {
    展开
    9
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • 想回火星的怪力少女

    7人对此回答表示赞同

    因为可能有重复的因子比如8=2*2*2;
    不设while循环,无法输出每个质因子(比如这里会输出8 = 2*4)
    此外,条件分支写错了,应是:
    if(n%i==0)
    {
    printf("%d*",i);
    n=n/i;
    }
    else
    break;
    展开
    7
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • Isabel

    1人对此回答表示赞同

    因为n=n/i越来越小,会接近i,也就是除到最小因子了,你比如用4,试下,经过while一次,会输出2*,在判断i是否等于n,此时,n等于i,所以不执行while,输出的n既是2,也就是最小因子了
    展开
    1
    0回复
    发布于 6年前

    评论(0)

    收起评论

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
咨询热线

13312967497

扫码添加业务即可随时咨询 还可领取小程序推广攻略

业务咨询: 13312967497
扫码咨询

扫码咨询套餐

回到顶部