c语言中的小小白-CSDN博客c语言中的小小白关注算法,c++,c语言,贪心算法,链表,mysql,动态规划,后端,线性回归,数据结构,排序算法领域.https://blog.csdn.net/bhbcdxb123?spm=1001.2014.3001.5343
给大家分享一句我很喜欢我话:
知不足而奋进,望远山而前行!!!
铁铁们,成功的路上必然是孤独且艰难的,但是我们不可以放弃,远山就在前方,但我们能力仍然不足,所有我们更要奋进前行!!!
今天我们更新了连续因子内容,
🎉 欢迎大家关注🔍点赞👍收藏⭐️留言📝
一、题目描述
一个正整数 N 的因子中可能存在若干连续的数字。例如 630 可以分解为 3×5×6×7,其中 5、6、7 就是 3 个连续的数字。给定任一正整数 N,要求编写程序求出最长连续因子的个数,并输出最小的连续因子序列。
输入格式:
输入在一行中给出一个正整数 N(1<N<231)。
输出格式:
首先在第 1 行输出最长连续因子的个数;然后在第 2 行中按 因子1*因子2*……*因子k
的格式输出最小的连续因子序列,其中因子按递增顺序输出,1 不算在内。
输入样例:
630
输出样例:
3
5*6*7
二、本题代码
C++版本:
#include<bits/stdc++.h>using namespace std;int prime(int n)
{int i;for (i = 2; i <= sqrt(n); i++){if (n % i == 0)return 0;}return 1;
}int main()
{long long n, i, j;cin >> n;int start = 0, l = 0;long long s = 1;if (prime(n))cout << "1\n" << n << endl;else{for (i = 2; i <= sqrt(n); i++){s = 1;for (j = i; s * j <= n; j++){s = s * j;if (n % s == 0 && j - i + 1 > l){start = i;l = j - i + 1;}}}cout << l << endl;for (i = start; i < start + l; i++){if (i == start)cout << i;elsecout << "*" << i;}cout << endl;}return 0;
}
#include<bits/stdc++.h>using namespace std;int prime(int n)
{int i;for (i = 2; i <= sqrt(n); i++){if (n % i == 0)return 0;}return 1;
}int main()
{long long n, i, j;cin >> n;int start = 0, l = 0;long long s = 1;if (prime(n))cout << "1\n" << n << endl;else{for (i = 2; i <= sqrt(n); i++){s = 1;for (j = i; s * j <= n; j++){s = s * j;if (n % s == 0 && j - i + 1 > l){start = i;l = j - i + 1;}}}cout << l << endl;for (i = start; i < start + l; i++){if (i == start)cout << i;elsecout << "*" << i;}cout << endl;}return 0;
}
C语言版本:
#include <stdio.h>
#include <math.h>int is_prime(int n) {int i;for (i = 2; i <= sqrt(n); i++) {if (n % i == 0)return 0;}return 1;
}int main() {long long n, i, j;scanf("%lld", &n);int start = 0, l = 0;long long s = 1;if (is_prime(n))printf("1\n%lld\n", n);else {for (i = 2; i <= sqrt(n); i++) {s = 1;for (j = i; s * j <= n; j++) {s = s * j;if (n % s == 0 && j - i + 1 > l) {start = i;l = j - i + 1;}}}printf("%d\n", l);for (i = start; i < start + l; i++) {if (i == start)printf("%lld", i);elseprintf("*%lld", i);}printf("\n");}return 0;
}
#include <stdio.h>
#include <math.h>int is_prime(int n) {int i;for (i = 2; i <= sqrt(n); i++) {if (n % i == 0)return 0;}return 1;
}int main() {long long n, i, j;scanf("%lld", &n);int start = 0, l = 0;long long s = 1;if (is_prime(n))printf("1\n%lld\n", n);else {for (i = 2; i <= sqrt(n); i++) {s = 1;for (j = i; s * j <= n; j++) {s = s * j;if (n % s == 0 && j - i + 1 > l) {start = i;l = j - i + 1;}}}printf("%d\n", l);for (i = start; i < start + l; i++) {if (i == start)printf("%lld", i);elseprintf("*%lld", i);}printf("\n");}return 0;
}