精华内容
下载资源
问答
  • C语言--大整数的因子

    2021-02-20 15:25:34
    首先,这是一个整数的除法,所以不可能用常规的整数取余来做。这个时候就需要利用一维数组了。首先我们来模拟一下平时我们做除法时的步骤。我们以4399这个数为例,我们用2来除一下,是不是这样的: 所以,我们看...


    1.问题描述

    已知正整数k满足2<=k<=9,现给出长度最大为30位的十进制非负整数c,求所有能整除c的k。

    2.问题分析

    首先,这是一个大整数的除法,所以不可能用常规的整数取余来做。这个时候就需要利用一维数组了。首先我们来模拟一下平时我们做除法时的步骤。我们以4399这个数为例,我们用2来除一下,是不是这样的:
    在这里插入图片描述
    所以,我们看一个数能不能被一个数整除,是不是看最后那步的余数是不是1。那么这就给我们提供了一个解题思路。我们可不可以用一个长度为30的一维数组来存储这个大数,然后从最高位开始,依次往后除,保留每次的余数。因为k的范围是2到9所以余数不可能超过19
    我们每次除的时候都要保留上一位除时的余数,如果不等于1是不是要将上次得到余数*10与当前位数字相加后再求余数。

    3.具体代码讲解

    #include<stdio.h>
    #include<string.h>
    int main()
    {
    	char str[30];
    	gets(str);
    	int k=2;
    	int len=strlen(str),count=0;
    	for(k=2;k<=9;k++)
    	{
    		int n=0;
    		for(int i=0;i<len;i++)
    		{
    			char c=str[i]-'0'+n*10;
    			n=c%k;
    		}
    		if(n==0)
    		{
    		printf("%d ",k);
    		count++;
    	}
    	}
    	if(count==0)
    	printf("none") ;
    }
    

    总结

    以后遇到类似的大数相加,相减等等问题的时候,都可以从最初我们是如何做加减乘除出发,利用一维数组来做。大家一起加油!!!!

    展开全文
  • 输入一个正整数,如果不是素数,正整数的质数因子。使用递归算法实现。#include#include#includeusing namespace std;bool isPrime(int n){if (n < 2){return false;}if (n == 2){return true;}for (int i = ...

    输入一个正整数,如果不是素数,求该正整数的质数因子。使用递归算法实现。

    #include

    #include

    #include

    using namespace std;

    bool isPrime(int n)

    {

    if (n < 2)

    {

    return false;

    }

    if (n == 2)

    {

    return true;

    }

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

    {

    if (n % i == 0){

    return false;

    }

    }

    return true;

    }

    void primeFactor(int n, vector &ob)

    {

    if (isPrime(n))

    {

    ob.push_back(n);

    }

    else

    {

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

    {

    if (n % i == 0)

    {

    ob.push_back(i);

    primeFactor(n / i, ob);

    break;

    }

    }

    }

    }

    void printPrime(int m, int n)

    {

    cout << m << "到" << n << "之间的素数:" << endl;

    for (int i = m; i < n; i++)

    {

    if (isPrime(i))

    {

    cout << i << "\t";

    }

    }

    cout << endl << endl;

    }

    void test()

    {

    int n;

    cout << "请输入正整数:";

    cin >> n;

    cout << endl;

    if (n == 1)

    {

    cout << "1既不是素数也不是合数!" << endl << endl;

    return;

    }

    if (isPrime(n))

    {

    cout << n << "是素数!" << endl << endl;

    return;

    }

    vector result;

    primeFactor(n, result);

    sort(result.begin(), result.end());

    cout << n << " = ";

    for (int i = 0; i < result.size(); i++)

    {

    if (i == result.size() - 1)

    {

    cout << result[i] << endl;

    }

    else

    {

    cout << result[i] << " * ";

    }

    }

    cout << endl;

    }

    int main()

    {

    printPrime(1, 100);

    int count = 12;

    while (true)

    {

    count--;

    test();

    if (count <= 0)

    {

    break;

    }

    }

    return 0;

    }

    结果如下:

    1到100之间的素数:

    2 3 5 7 11 13 17 19 23 29

    31 37 41 43 47 53 59 61 67 71

    73 79 83 89 97

    请输入正整数:100

    100 = 2 * 2 * 5 * 5

    请输入正整数:1024

    1024 = 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2

    请输入正整数:789

    789 = 3 * 263

    请输入正整数:12345

    12345 = 3 * 5 * 823

    请输入正整数:666666

    666666 = 2 * 3 * 3 * 7 * 11 * 13 * 37

    请输入正整数:97

    97是素数!

    注意:输入的正整数不能超过最大值。

    展开全文
  • C语言正整数的素数因子分解 给定某个正整数 N,其素因子分解结果 输入格式: 输入long int范围内的正整数 N。 输出格式: 按给定格式输出N的素因式分解表达式,即 N=p1^k1*p2^k2*…*pm^km 其中pi为素因子...

    整数的素数因子分解
    给定某个正整数 N,求其素因子分解结果
    输入格式:
    输入long int范围内的正整数 N。
    输出格式:
    按给定格式输出N的素因式分解表达式,即

    N=p1^k1*p2^k2**pm^km
    

    其中pi为素因子并要求由小到大输出,
    指数ki为pi的个数;当ki为1即因子pi只有一个时不输出ki。

    输入样例:

    2350
    

    输出样例:

    2350=2*5^2*47
    

    C语言完整代码如下:

    #include<stdio.h>
    #include<math.h>
    int main() {
    	long int m;
    	while(scanf("%ld",&m)!=EOF) {
    		int a[1000];
    		int b[100];
    		long int i;
    		int j,n;
    		if(m==1) {
    			printf("1=1\n");
    		} else {
    			printf("%ld=",m);
    			int k=0;
    			for(i=2; i<=m; i++) {
    				n=sqrt(i);
    //				对每一个数 i 分解它的素数 
    				while(m%i==0) {
    					for(j=2; j<n; j++) {
    						if(i%j==0) {
    							break;
    						}
    					}
    					if(j>=n) {
    //						i为素数,则保存到数组中
    						a[k]=i;
    						k++;
    					}
    					m=m/i;
    				}
    			}
    			int x;
    			for(i=0; i<k; i++) {
    				x=0;
    //				统计重复出现的数字的次数
    				for(j=i; j<k; j++) {
    					if(a[i]==a[j])
    						x++;
    				}
    //				跳过已统计过的
    				i=i+x-1;
    //				格式要求,如果未到末尾
    				if(i!=k-1) {
    					if(x==1) {
    						printf("%d*",a[i]);
    					} else {
    						printf("%d^%d*",a[i],x);
    					}
    //				到了末尾则换行输出 
    				} else {
    					if(x==1)
    						printf("%d\n",a[i]);
    					else
    						printf("%d^%d\n",a[i],x);
    				}
    			}
    		}
    	}
    	return 0;
    }
    
    
    展开全文
  • 已知正整数k满足2<=k<=9,现给出长度最大为30位十进制非负整数c,所有能整除ck. 输入描述: 若干个非负整数c,c位数<=30 每行一个c 输出描述: 每一个c结果占一行 1) 若存在满足 c%k == 0 ...

    题目描述

    已知正整数k满足2<=k<=9,现给出长度最大为30位的十进制非负整数c,求所有能整除c的k.

    输入描述:

    若干个非负整数c,c的位数<=30
    每行一个c

    输出描述:

    每一个c的结果占一行
    1) 若存在满足 c%k == 0 的k,输出所有这样的k,中间用空格隔开,最后一个k后面没有空格。
    2) 若没有这样的k则输出"none"
    
    注意整数溢出问题
    不要对-1进行计算

    示例1

    输入

    复制

    30
    72
    13
    -1
    

    输出

    复制

    2 3 5 6
    2 3 4 6 8 9
    none

    #include<stdio.h>
    #include<math.h>
    #include<string.h>

    int main()
    {
        char str[31];
        int a[31];
        int len,k,i,j,num,count;
        while(scanf("%s",str)!=EOF)
        {
            if(str[0]=='-') break;
            len=strlen(str);
            for(i=0;i<len;i++)
            {
                a[i]=str[i]-'0';
            }
            count=0;
            for(k=2;k<=9;k++)
            {
                num=0;
                for(j=0;j<len;j++)
                {
                    num=(num*10+a[j])%k;
                }
                if(num==0)
                {
                    if(count>0) printf(" ");
                    printf("%d",k);
                    count++;
                }
            }
            if(count==0)
                printf("none\n");
            else
                printf("\n");
        }
        return 0;
    }

    展开全文
  • 整数的因子//C语言

    2020-02-21 22:05:06
    一个非负整数c,c位数<=30。 输出 若存在满足 c%k == 0 k,从小到大输出所有这样k,相邻两个数之间用单个空格隔开;若没有这样k,则输出"none"。 样例输入 30 样例输出 2 3 5 6 #include<stdio.h> ...
  • 一个简单的练习,代码虽短所含的内容丰富1.[代码][C/C++]代码/*编写递归函数:求一个大于2的正整数的所有质因子之和1、判断输入数是否满足条件,即,zs>2 且是int 类型2、满足条件1后求和,he=zs1+zs2+zs3....和=...
  • 要求程序定义一个FacSum ()函数和一个main()函数,FacSum ()函数计算并返回n所有正因子之和,其余功能在main()函数中实现。 int FacSum(int n) { //计算n所有正因子(包括1,不包括自身)之和sum,本函数返回sum }...
  • 满意答案我这效率最高,最直观 #include #include void main(){_开始:printf("请输入待分析的正整数\n");int n待分析;scanf("%d", &n待分析);if(n待分析 < 0)goto _开始;int n因子上限 = (int) sqrt(...
  • 功能:输入一个正整数,按照从小到大顺序输出它所有质因子(重复也要列举)(如180因子为2 2 3 3 5 )最后一个数后面也要有空格 输入描述: 输入一个long型整数 输出描述: 按照从小到大顺序输出它所有...
  • 题目说明:给定某个正整数N,其素因子分解结果,即给出其因式分解表达式 N = p1^k1* p2^k2*…*pm^km。输入格式说明:输入long int范围内的正整数N。输出格式说明:按给定格式输出N素因式分解表达式,即 N = p1^...
  • 素数因子 C语言

    2020-11-19 07:50:36
    输入一个正整数,所有素数因子。 (质数是指在大于1自然数中,除了1和它本身以外不再有其他因数自然数。) 输入 输入为一个正整数,如:15 输出 输入为它所有素数因子,以空格为分隔,如:3 5 解答 #...
  • C语言:连续因子

    千次阅读 2018-02-21 15:32:51
    一个正整数N的因子中可能存在若干连续的数字。例如630可以分解为3*5*6*7,其中5、6、7就是3个连续的数字。给定任一正整数N,要求编写程序出最长连续因子的个数,并输出最小的连续因子序列。输入格式:输入在一行中...
  • 题目说明:给定某个正整数N,其素因子分解结果,即给出其因式分解表达式 N = p1^k1* p2^k2*…*pm^km。输入格式说明:输入long int范围内的正整数N。输出格式说明:按给定格式输出N素因式分解表达式,即 N = p1^...
  • <p>1.(统计正数和负数个数ÿ...读入一个正整数,然后以升序显示它所有最小因子(重复数字只显示一次)。例如,若输入整数是120,那么输出就应该是:2,3,5。</p>
  • C语言 蓝桥杯 素因子去重

    千次阅读 2020-05-09 18:48:04
     给定一个正整数n,求一个正整数p,满足p仅包含n所有素因子,且每个素因子的次数不大于1 输入格式  一个整数,表示n 输出格式  输出一行,包含一个整数p。 样例输入 1000 样例输出 10 数据规模和约定  n<=...
  • C语言实现素因子分解

    2021-01-20 05:55:33
    给定某个正整数N,其素因子分解结果,即给出其因式分解表达式 N = p1^k1 * p2^k2 *…*pm ^km。 输入格式说明: 输入long int范围内的正整数N。 输出格式说明: 按给定格式输出N素因式分解表达式,即 N = p1^...
  • C语言因子之和

    千次阅读 2018-11-02 20:58:37
    输入一个正整数n 输出: 输出整数n的因子之和 #include &lt;stdio.h&gt; int main() { int n,sum=0,a=2,b; /*b为因子*/ scanf("%d",&amp;n); do { while(n%a==0) { ...
  • 一个正整数 N 的因子中可能存在若干连续的数字。例如 630 可以分解为 3×5×6×7,其中 5、6、7 就是 3 个连续的数字。给定任一正整数 N,要求编写程序出最长连续因子的个数,并输出最小的连续因子序列。 输入格式...
  • 一个正整数 N 的因子中可能存在若干连续的数字。例如 630 可以分解为 3×5×6×7,其中 5、6、7 就是 3 个连续的数字。给定任一正整数 N,要求编写程序出最长连续因子的个数,并输出最小的连续因子序列。 输入格式...
  • 最大公因数,也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个。a,b的最大公约数记为(a,b),同样的,a,b,c的最大公约数记为(a,b,c),多个整数的最大公约数也有同样的记号。最大公约数...
  • 一个正整数 N 的因子中可能存在若干连续的数字。例如 630 可以分解为 3×5×6×7,其中 5、6、7 就是 3 个连续的数字。给定任一正整数 N,要求编写程序出最长连续因子的个数,并输出最小的连续因子序列。 输入格式...
  • 一个正整数 N 的因子中可能存在若干连续的数字。例如 630 可以分解为 3×5×6×7,其中 5、6、7 就是 3 个连续的数字。给定任一正整数 N,要求编写程序出最长连续因子的个数,并输出最小的连续因子序列。 输入格式...
  • 一个正整数N(6<=N<=10000)。 输出格式: 输出N以内所有完数,一个完数占一行。 输入样例1: 100 输出样例1: 6 28 代码: #include<stdio.h> int main() { int a,b,c,sum; scanf("%d",&am
  • 完数是指一个整数恰好等于它的因子之和(除自身外),则称这个数为完数。从键盘先后输入两个不大于9999的正整数m和n,若m>n,则交换两数。然后m~n(m和n均为正整数且m≤n&...
  • 最小公倍数:数论中一种概念,两个整数公有倍数成为他们公倍数,其中一个最小公倍数是他们最小公倍数,同样地,若干个整数公有倍数中...//输入两个正整数mn,其最大公约数和最小公倍数。 #include <st
  • 实例022 求一个正整数的所有因子 从键盘输入一个正整数,求它的所有因子。 #include <stdio.h> main() { int i, j; printf("please input:\n"); scanf("%d", &i); for (j = 1; j <= i; j++) if ...
  • 输入第一行给出一个正整数N(≤100)。随后一行按格式a1/b1 a2/b2 …给出N个有理数。题目保证所有分子和分母都在长整型范围内。另外,负数符号一定出现在分子前面。 输出格式: 输出上述数字和最简形式 —— ...
  • 7-79 N数求和(C语言

    千次阅读 2020-05-24 15:02:55
    输入第一行给出一个正整数N(≤100)。随后一行按格式a1/b1 a2/b2 ...给出N个有理数。题目保证所有分子和分母都在长整型范围内。另外,负数符号一定出现在分子前面。 输出格式: 输出上述数字和最简形式 —— ...
  • 输入第一行给出一个正整数N(≤100)。随后一行按格式a1/b1 a2/b2 …给出N个有理数。题目保证所有分子和分母都在长整型范围内。另外,负数符号一定出现在分子前面。 输出格式: 输出上述数字和最简形式 —— ...
  • 输入第一行给出一个正整数N(≤100)。随后一行按格式a1/b1 a2/b2 …给出N个有理数。题目保证所有分子和分母都在长整型范围内。另外,负数符号一定出现在分子前面。 输出格式: 输出上述数字和最简形式 —— ...

空空如也

空空如也

1 2 3
收藏数 47
精华内容 18
关键字:

c语言求一个正整数的因子

c语言 订阅