求一个数的因子C/C++算法

如题所述

第1个回答  推荐于2018-03-02
C++写的,你看一下吧,我尽量详细的注释了一下,不懂就追问;
#include<iostream>
using namespace std;
int main()
{
int num; //定义一个变量num,接收要求因子的数
int i; //循环变量
cout<<"请输入一个数"<<endl; //提示输入一个数
cin>>num; //输入这个数
cout<<"这个数的所有因子有:"<<endl; //输出提示
for(i=1;i<=num;i++) //通过循环找出所有因子
{
if(num%i==0)
{
cout<<i<<endl; //每找到一个就输出
}
}
return 0;
}本回答被网友采纳
第2个回答  2012-08-27
我把上面的那位的稍微改一下就稍微有效率了#include<iostream>
using namespace std;
int main()
{
int num; //定义一个变量num,接收要求因子的数
int i; //循环变量
cout<<"请输入一个数"<<endl; //提示输入一个数
cin>>num; //输入这个数
cout<<"这个数的所有因子有:"<<endl; //输出提示
for(i=1;i<=num/2;i++) //通过循环找出所有因子
{
if(num%i==0)
{
cout<<i<<endl; //每找到一个就输出
}
}cout<<num<<endl;
return 0;
}
第3个回答  2012-08-29
只需比较 sqrt(n)次;假如n==10000,只需比较100次
#include<stdio.h>
#include<math.h>
int main()
{
int i,n;
printf("请输入一个整数:");
scanf("%d",&n);
printf("%d的因子为:",n);
for(i=1;i<=sqrt(n);i++) //sqrt(n)对n开方
if(n%i==0)
printf("%4d %d ",i, n/i);
printf("\n");
}本回答被提问者采纳
第4个回答  2012-08-12
#include<stdio.h>
int main()
{
int i,n;
printf("请输入一个整数:");
scanf("%d",&n);
printf("%d的因子为:",n);
for(i=1;i<=n;i++)
if(n%i==0)
printf("%4d",i);
printf("\n");
return 0;
}
第5个回答  2012-08-12
#include"stdio.h"
main(){
int n,m;
printf("输入一个整数:");
scanf("%d",&n);
while(true)
{
int i = n-1;
if(n%i ==0)
{
printf("%d\n",i);
}
i = i -1;
if( i < 0)break;
}
}
相似回答