求2~100中每个数的质因子,输出如下形式:2=2;3=3;4=2*2......100=2*2*5*5

2025-03-04 12:11:56
推荐回答(3个)
回答1:

#include <stdio.h>

void f(int n){

int i,k=0;

printf("%d",n);

while(n!=1){

for(i=2;i<=n;i++){

printf("%d",i);

n/=i;

break;

int main()

int i;

for(i=2;i<101;i++){

f(i);

//getch();

return 0;

基本信息

质因数就是一个数的约数,并且是质数。

比如8=2×2×2,2就是8的质因数。

12=2×2×3,2和3就是12的质因数。

把一个式子以12=2×2×3的形式表示,叫做分解质因数。

把一个合数写成几个质数相乘的形式表示,这也是分解质因数,如16=2×2×2×2,2就是16的质因数。

回答2:

#include
#include
void f(int n){
int i,k=0;
printf("%d",n);
while(n!=1){
for(i=2;i<=n;i++){
if(!(n%i)){
if(k)putchar('*');
else{putchar('=');k=1;}
printf("%d",i);
n/=i;
break;
}
}
}printf("\n");
}
int main(){
int i;
for(i=2;i<101;i++){
f(i);
}
//getch();
return 0;
}

回答3:

pascal 版本的。。。
Var
a, b: Array[1..100] OF Longint;
k, temp, i, j, n, t, l: longint;
Function check(i: Longint): Boolean;
Var
j: longint;
Begin
check := true;
for j:=2 To i-1 DO
if i mod j = 0 Then Begin check := false; Exit; End;
End;

begin
For i:=2 TO 100 Do
if check(i) Then Begin
inc(t);
a[t] := i;
End;

For i:=2 To 100 Do Begin
n := i;
l := 0;
while n <> 1 Do Begin
for j:=1 TO t Do
if n mod a[j] = 0 THen Begin
inc(l);
b[l] := a[j];
n := n Div a[j];
End;
End;
For j:=1 To l-1 DO
for k:=j + 1 To l DO
if b[j] > b[k] Then Begin temp := b[j]; b[j] := b[k]; b[k] := temp; End;
Write(i, ' = ', b[1]);
For j:=2 To l DO Write('*', b[j]);
Writeln;
End;
End.