c语言求因数
Ⅰ 求一个整数的因数和 的c语言程序代码
C语言实现,参考代码如下:
#include<stdio.h>
intmain()
{
intn,i,sum=0;
scanf("%d",&n);
if(n<1)return0;
for(i=1;i<=n;++i)
if(n%i==0)
sum+=i;
printf("因数之和为%d",sum);
return0;
}
Ⅱ 求一个数的最大因数!c语言
亲,你不需要这样,你可以用逆向思维:
从数的本身递减至2;
for(int i = a/2; i > 1; i--)
其中若满足i 为 a 的因数,就跳出循环,那么此时 i 就为 a 的最大因数。
而当 i = 1时,那说明它是个质数。
Ⅲ 求一个数的质因数。c语言编程
这个问题,首先,用筛选法找出质素,然后,遍历这个素以内的所有素数,找到质因数!
#include <stdio.h>
#define MAX 1001
char a[MAX];
int main()
{
int i,j;
for(i = 2; i < MAX; i++)
{
if(a[i] == 0)
for(j = i+i; j < MAX; j += i)
a[j] = 1;
}
int n;
printf("Please enter a number:\n");
scanf("%d",&n);
for(i = 2; i <= n/2; i++)
{
if(a[i] == 0)
{
if(n % i == 0)
printf("%d ",i);
}
}
printf("\n");
}
Ⅳ c语言 分解质因数
代码:
#include<stdio.h>
intmain()
{
inta[6555],i,j,t=1;
a[0]=2;
for(i=3;i<65540;i+=2)
{
for(j=2;j*j<=i;j++)
{
if(i%j==0)
break;
}
if(j*j>i)
{a[t]=i;t++;}
}
intn,n1,n2,x,y,f=0;
while(scanf("%d",&n)!=EOF)
{
x=0;
for(i=0;a[i]<=n;i++)
if(a[i]==n)
{
printf("%d=1*%d ",n,n);
x=1;
}
if(x==0){
printf("%d=",n);
for(i=0;a[i]<n;i++)
{
if(n%a[i]==0)
{
n=n/a[i];
printf("%d*",a[i]);
i--;
}
}
printf("%d ",n);}
}
return0;
}
思路就是求出所有素数,然后从素数 2 开始,找可以把n整除的素数,(每次都从素数2开始找,而且找到后要更新n的值)
Ⅳ C语言如何求出一个数的“因数”求源代码
#include<stdio.h>
intmain(void)
{
intx,i=2;
printf("请输入一个整数:");
scanf("%d",&x);
while(i<=x)
{
if(x%i==0)
{
printf("%d",i);
x=x/i;
i=2;
}
else
i++;
}
return0;
}
Ⅵ C语言程序,求一个数的分解因数
不是分解质因数,对吗?
分解质因数简单,分解因数要难些,利用回溯可以做,以下是我写的代码,看一看是否是你想要的。
#include "stdio.h"
#include "stdlib.h"
#include "ctype.h"
typedef int Integer[100];
Integer s;
int t=0;
int D;
void dd(int m,int n);
void main()
{
printf("输入一个大于3的正整数:");
do
{
scanf("%d",&D);
if(D<=3)
{
printf("输入错误,请重新输入!");
}
else
{
break;
}
}while(D>3);
dd(2,D);
}
void dd(int m,int n)
{
int i,j,k;
i=m;
j=n;
if(i<=j/i)
{
if(j % i==0)
{
t=t+1;
s[t]=i;
for(k=1;k<=t;k++)
{
printf("%d*",s[k]);
}
printf("%d=%d\n",j/i,D);
dd(i,n/i);
t=t-1;
dd(i+1,j);
}
else
{
dd(i+1,j);
}
}
}
Ⅶ c语言求一个数的最大因数问题,这个因数数组应该怎么申请
亲,你不需要这么麻烦,因为输入的数没有限制,无法定义数组的大小;
你可以从数的本身向2递减;
for(int i = a/2; i > 1; i--)
然后判断某个i值是否为a 的因数,若是,则为最大因数。
Ⅷ c语言输出一个数的所有因数
从数学定义可以得知,一个数的因数范围在1到该数本身。所以只需要从1到该数遍历,逐个尝试模除,可以整除的则为因数,将所有符合条件的数打印即可。
代码如下:
#include<stdio.h>
intmain()
{
intn,i;
scanf("%d",&n);//输入要输出因数的值。
for(i=1;i<=n;i++)
{
if(n%i==0)printf("%d,",i);//输出因数。
}
return0;
}
Ⅸ C语言怎样高效求一个数的所有因数的和
参考代码如下
#include<stdio.h>
int main()
{
int i,n,b;
long sum=0;
scanf("%d",&n);
sum=n;
printf("所有因数:");
for(i=1;i<=n/2;++i)
if(n%i==0){
printf("%d ",i);
sum+=i;
}
printf("%d ",n);
printf("\nsum=%d ",sum);
return 0;
}
Ⅹ c语言求分解质因数
有这样几个问题:
声明的二维数组是aaa,但代码中应用时又变成了a,会产生a未定义错误。
int aaa[3][100000];数组太大,建议使用全局变量或动态数组;改成int a[3][1000];更好。
a[3][z]=a[1][j];这里和jj=a[3][z]*1;这里数组a都越界了。声明的a第一维是3,即0、1、2,不可能有[3]。
把这些错误改了再说。