这个分解质因数中,第二个for循环有啥用,j变量的意义在哪
#include<stdio.h>
int main()
{
int n, i, j, k = 1;
scanf("%d", &n);
printf("%d=", n);
for (i = 2; i <= n; i++)
{
for (j = 2; j < i; j++)
if (i%j == 0) break;
if (j >= i)
while (n%i == 0)
{
n = n / i;
if (k == 1) { printf("%d", i); k++; }
else printf("*%d", i);
}
}
return 0;
}
#include<stdio.h>
int main()
{
int n, i, j, k = 1;
scanf("%d", &n);
printf("%d=", n);
for (i = 2; i <= n; i++)
{
while (n%i == 0)
{
n = n / i;
if (k == 1) { printf("%d", i); k++; }
else printf("*%d", i);
}
}
return 0;
}
没啥用。。你run过了吗
有用啊
第二个for循环的作用是判断因子 i 是否是质数,是质数再判断是否是 n 的因子。其实第二个for循环在这里没啥用,多余的判断。代码修改如下,供参考:
#include <stdio.h>
int main()
{
int n, i=2, k=0;
scanf("%d", &n);
while (n != 1)
{
if (n % i == 0)
{
if(k==0) printf("%d = ",n);
printf(k++ == 0 ? "%d" : "*%d",i);
n /= i;
}
else {
i++;
}
}
return 0;
}