编程题:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
#include <stdio.h> #include <math.h> bool isnum(int n) { for(int i=2;i<=sqrt(n);i++) { if(n%i==0) return false; } return true; } int main() { int n; scanf("%d",&n); int a[100]={0}; int j=0; int num=n; while(num!=0) { int i; for(i=2;i<=num;i++) { if(num%i==0 && isnum(i)) { a[j++]=i; break; } } num=num/i; } printf("%d=",n); for(int k=0;k<j-1;k++) printf("%d*",a[k]); printf("%d",a[j-1]); return 0; }
#include <bits/stdc++.h> using namespace std; int main(){ int n; cin >> n; int a[50]; int t = 0; for(int i =2;i <= n; i++){ while(n%i == 0){ n=n/i; a[t++] = i; } } for(int i = 0;i<t;i++){ cout << a[i] << ' '; } }
#include <stdio.h>
#include <stdilb.h>
#include <math.h>
#include <string.h>
int main(){
int a;
scanf("%d",&a);
int b=0;
int c[9];
for(int i=2;i<=9;i++){
if(a%i==0){
a=a/i;
c[b]=i;
b++;
}
printf("%d=",a);
for(int j=0;j<strlen(c);j++)
if(j==strlen(c)-1) printf("%d",c[j]);
else printf("%d*"c[j]);
return 0;
1
#include <stdio.h> main(){ int n,j,x; int a[100]={0}; int i=0; scanf("%d",&n); //90 2 3 3 5 x=n; while(n!=1){ for(int k=2;k<=n;k++){ if(n%k==0){//此时n为第一个质数 a[i++]=k; n/=k; k--; } } } printf("%d=",x); for(j=0;a[j+1]!=0;j++){ printf("%d*",a[j]); } printf("%d",a[j]); }
#include<iostream>
using namespace std;
void disintegrate(int data)
{
static int factor=2;
while(data%factor==0)
if(data/factor==1)
cout<<factor<<endl;
factor=2;
return;
cout<<factor<<"*";
data=data/factor;
factor++;
disintegrate(data);
int main()
int data;
cin>>data;
程序分析:对n进行分解质因数,应先...
用户登录可进行刷题及查看答案
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
#include<stdio.h> int main() { int n,i; printf("请输入整数:"); scanf("%d",&n); printf("%d=",n); for(i=2;i<=n;i++) { while(n%i==0) { printf("%d",i); n/=i; if(n!=1) printf("*"); } } printf("\n"); return 0; }
登录后提交答案