感悟网 导航

任意给定一个大于1的整数n,设计一个算法求出n的所有因数。 任意给定一个大于1的整数n,设计一个算法求出n的所有因数(n...

作者&投稿:一纪 (若有异议请与网页底部的电邮联系)
任意给定一个大于1得正整数n,设计一个算法求出n得所有因数。这题要怎么做?~

楼上的时间复杂度为还是比较高 为O(n) 其中很多遍历都是重复的 我这里的代码可以达到时间复杂度O(√n)
#include
void main()
{
int i;
int number;
printf("请输入一个大于1的正整数");
scanf("%d",&number);
for(i=2;i * i
追问:
看不懂。
追问:
数学题的规范解题步骤。
追问:
谢谢啦。
追答:
采纳个最佳答案呗~
评论
0
0
0
加载更多

18=2*3^2,因此所有因数为1,2,3,6,9,18。根据从m=1开始,用循环语句m=m+1和判断语句m<=n:?及n/m是否余数为0?自己设计算法吧

n的因数,设为x,可得n=kx,k为常数,明显,k也为n的因数。所以求n的因数,可以求枚举1到n^0.5的所有数,判断这个数是否能被n除尽,那么n/x必然也为n的因数,且除了x^2=n的特殊情况,其他的x和n/x都不相等。为了看起来舒服,可以排序一下。
c语言代码
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int cmp (const void *aa,const void *bb) //比较函数
{
return *(int *)aa-*(int *)bb;
}
int main()
{
int x,n,i,top=0;
int num[10000];
scanf ("%d",&n);
for (x=1;x<=sqrt(n);++x)
{
if (n%x==0) {num[top++]=x;if (x!=(n/x))num[top++]=n/x;}
}
qsort(num,top,sizeof(num[0]),cmp);
for (i=0;i<top;++i)
printf ("%d ",num[i]);
printf ("\n");
return 0;
}
这个算法并不高效果,不过算10亿以内的整数n,肯定能不到1秒出解的

你好:
第一步:给定一个正整数n
第二步:依次以(2~n-1)的整数d为除数去除n,检查余数是否为0.
若是,则d是n的因数;若不是,则d不是n的因数
第三步:在n的因数中加入1和n
第四步:输出n的所有因数

人才啊,你说的算法是计算机程序上的算法?我只能给出C语言是怎么写的,方法就是让这个数和1--n之间的所有整数做除法求取余数若余数为0则将其存入一个数组,数组长度为n,采用动态数组麻烦一点,若不是则将除数加1之后继续下一次循环直至循环结束代码从略OVER

打酱油......

《任意给定一个大于一的整数n,设计一个算法求出n的所有因数。》
答:第一步:输入一个大于1的正整数n;第二步:令a=1;第三步:令b是n除以a的余数;第四步:若b=0,则输出a;第五步:令a=a+1;第六步:若a<=n,则回到第三步。

《任意给定一个大于1得正整数n,设计一个算法求出n得所有因数。这题要...》
答:include <stdio.h>void main(){ int i; int number; printf("请输入一个大于1的正整数"); scanf("%d",&number); for(i=2;i<number;i++) { if(number%i==0)//能整除,说明是因子 printf(" %d ",i); }} ...

《任意给定一个大于1的整数n,设计一个算法求出n的所有因数(n=18)》
答:18=2*3^2,因此所有因数为1,2,3,6,9,18。根据从m=1开始,用循环语句m=m+1和判断语句m<=n:?及n/m是否余数为0?自己设计算法吧

《任意给定一个大于1的整数n,试设计一个算法判定n是否为质数》
答:for a:=1 to 根号n do if n/a 为不整数 then a=a+1 ifa大于n then输出(‘a为质数’)else 输出(‘a不为质数’)

《任意给定一个大于1得正整数n,设计一个算法求出n得所有因数。这题要...》
答:楼上的时间复杂度为还是比较高 为O(n) 其中很多遍历都是重复的 我这里的代码可以达到时间复杂度O(√n)include void main(){ int i;int number;printf("请输入一个大于1的正整数");scanf("%d",&number);for(i=2;i * i 追问:看不懂。追问:数学题的规范解题步骤。追问:谢谢啦。追答...

《任意给定一个大于1的正整数n,设计一个算法求出n的所有因数.》
答:我就是高二的。第一步:输入一个大于1的正整数n;第二步:令a=1;第三步:令b是n除以a的余数;第四步:若b=0,则输出a;第五步:令a=a+1;第六步:若a<=n,则回到第三步。

《任意给定一个大于1的正整数n,设计一个算法求出n的所有因数.》
答:算法:定义一个整数型变量i,使用循环语句(for)让i从2到n-1,在每个循环里让n除以i,如果能整除则在屏幕上打印i.很简练吧~^_^

《任意给定一个大雨1的正整数n,设计一个算法求出n的所有因数》
答:n=136;%输出任意正整数 j=1;k=[];for i=2:n if(mod(n,i)==0)k(j)=i;j=j+1;end end k%显示所示因数

《求”任意给定一个大于1的整数n,设计一个算法求出n的所有因数“的程序框...》
答:public List<int> GetFactor(int number){ List<int> listResult = new List<int>();listResult.Add(1);listResult.Add(number);for (int i = 2; i < number; i++){ if (i < number / i){ if (number % i == 0){ listResult.Add(i);listResult.Add(number / i);} else ...

《任意给定一个大于1的整数,设计一个算法求出n的所有因数》
答:public static void test(int n){ if(n <= 1){ System.out.println("数字不可小于2");}else{ for(int i=2;i<n/2+1;i++){ if(n%i == 0){ System.out.println(i + " ");} } } } 这种情况是因数不带本身的。

   

返回顶部
本页内容来自于网友发表,若有相关事宜请照下面的电邮联系
感悟网