求:输入8 输出 8的因子有: 1 2 4
这好难啊,怎么输出1 2 4不重复
可采纳
#include<stdio.h>
int main()
{
int i,a;
scanf("%d",&a);
for(i=1;i<a;i++)
{
if(a%i==0)
printf("%d ",i);
}
return 0;
}
#include <stdio.h>
#define N 10 // 因子最大个数
int main()
{
int num = 8;
int factors[N] = {0}; // 存储不重复的因子
int count = 0; // 记录不重复因子的个数
for (int i = 1; i <= num; i++) {
if (num % i == 0) {
// 判断i是否已经在数组中出现过
int flag = 0;
for (int j = 0; j < count; j++) {
if (factors[j] == i) {
flag = 1;
break;
}
}
// 如果i没有出现过,则将其添加到数组中
if (!flag) {
factors[count++] = i;
}
}
}
printf("%d的因子有:", num);
for (int i = 0; i < count; i++) {
printf("%d ", factors[i]);
}
printf("\n");
return 0;
}
#include <iostream>
#include <vector>
#include <unordered_set>
std::vector<int> findFactors(int num) {
std::vector<int> factors;
std::unordered_set<int> uniqueFactors;
for (int i = 1; i <= num; ++i) {
if (num % i == 0) {
factors.push_back(i);
uniqueFactors.insert(i);
}
}
return factors;
}
int main() {
int num;
std::cout << "Enter a number: ";
std::cin >> num;
std::vector<int> factors = findFactors(num);
std::cout << num << "'s factors are: ";
for (int factor : factors) {
if (uniqueFactors.count(factor) == 1) {
std::cout << factor << " ";
}
}
std::cout << std::endl;
return 0;
}
defabc
//1.若有问题,欢迎留言指出,谢谢!!!
//2.若您有更好的想法,也欢迎您的留言,谢谢!!!
void Shift( char s[] )
{ int i,j,k,n;
n=strlen(s);// strlen()用来计算指定的字符串s 的长度,不包括结束字符"\0"。
for(i=0;i<3;i++)//将输入字符串的前3个字符移到最后,也就是循环三次
{ k=s[0];//把第一个元素取出来
for(j=1;j<n;j++)//从第二个开始依次给前一个赋值
s[j-1]=s[j];
s[n-1]=k;//将取出来的数移到最后
}
}