C++语言编程求变正整数N的所有因子(包括1与N本身)以及这些因子的和,其中的N值通过键盘输入?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++语言编程求变正整数N的所有因子(包括1与N本身)以及这些因子的和,其中的N值通过键盘输入?相关的知识,希望对你有一定的参考价值。

#include <iostream>
#include <vector>
using namespace std;

vector<int> vec; //用一个向量(数组)保存所有的因子

//求总和
int calc(int N)

int sum = 0;
for (int i=2; i<N; ++i)

if (N%i == 0)vec.push_back(i);

vector<int>::iterator itr = vec.begin();
for (; itr != vec.end(); ++itr)

sum += *itr;

return sum;


int main()

int n;
cout << "Enter: ";
cin >> n;
vec.push_back(1);
vec.push_back(n); //将1和n放入数组
int sum = calc(n); //总和
vector<int>::iterator itr = vec.begin();
//输出这些数
for (; itr != vec.end(); ++itr)

cout << *itr << " ";

参考技术A #include<iostream>
using namespace std;
void main()

int data,sum=0;
int i;
cout<<"input data:";
cin>>data;
for(i=1;i<=data;i++)

if(data%i==0)cout<<i<<" ";sum+=i;

cout<<endl;
cout<<"因子之和为:"<<sum<<endl;

友好数对

题意描述:
输入两个正整数m和n,顺序输出m到n之间的所有友好数对。
如果两个整数的所有正因子之和(包括1,不包括自身)等于对方,就称这对数是友好的。例如:1184和1210是友好数对
解题思路:
编写函数计算出m-n每个整数的所有正因子之和,然后利用函数算出该因子和的因子和是否等于该数本身,输出原整数与其因子和。
代码实现:
#include<stdio.h>
int facsum(int n)
{
 int i,sum=0;
 for(i=1;i<n;i++)
 {
  if(n%i==0)sum+=i;
 }
 return sum;
}
int main()
{
 int m,n,i,k=0,find=0,t=0;
 scanf("%d%d",&m,&n);
 for(i=m;i<=n;i++)
 {
  t=facsum(i);
  if(facsum(t)==i&&t>i)
  {
   find=1;
   printf("%d %d ",i,t);
  }
 }
 if(find==0)printf("No answer ");
 return 0;
}
易错分析:
没有准确理解数组应用,和友好数对的真正含义,大费周章,造成了不必要的杂乱。


































以上是关于C++语言编程求变正整数N的所有因子(包括1与N本身)以及这些因子的和,其中的N值通过键盘输入?的主要内容,如果未能解决你的问题,请参考以下文章

1104: 求因子和(函数专题)

C语言 N为正整数,计算从1到N的所有整数中包含数字1的个数

C语言试题五十六之计算并输出给定整数n的所有因子(不包括1与自身)之和。规定n的值不大于1000。

C语言试题五十六之计算并输出给定整数n的所有因子(不包括1与自身)之和。规定n的值不大于1000。

输入2 个正整数m 和n(m≥1,n≤1 000),输出m ~n 之间的所有完数,完数就是因子和与它本身相等的数

友好数对