第1题 因数和
题目描述
给你一个整数N,求它的所有因数的和。比如N=12,和为1+2+3+4+6+12=28。
输入格式
只一行,一个整数N。(1≦N≦1,000,000)
输出格式
只一行,一个整数N。
输入/输出例子1
输入:
12
输出:
28
代码
#include<bits/stdc++.h>
using namespace std;
long long n,ans;
int main(){
cin>>n;
for(int i=1;i<=n;i++)
{
if(n%i==0) ans+=i;
}
cout<<ans;
return 0;
}
第2题 判断质数
题目描述
给你一个整数a,请你判断它是否质数。如果不是,输出1,如果是,输出0。
输入格式
输入2行,第一行一个整数g,表示有g组测试数据。
接下来有g个数a。1<=g<=10,1<=a<=2147483647。
输出格式
g行,每行0或1。
输入/输出例子1
输入:
3
9
7
6
输出:
1
0
1
代码
#include <bits/stdc++.h>
using namespace std;
int n,g;
bool zs(int k);
int main()
{
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d",&g);
if(g==0||g==1){printf("1\n");continue;}
printf("%d\n",zs(g));
}
return 0;
}
bool zs(int k)
{
for(int i=2;i<=sqrt(k);i++)
{
if(k%i==0)
{
return 1;
}
}
return 0;
}
第3题 因子个数
题目描述
桐桐做完数学作业,闲来无事,她发现整数n的因子很有趣,好像还存在一些规律。她想把给定的整数n的因子个数计算出来,聪明的你能帮助她吗?
输入格式
一行,一个整数 N(1<= N <= 2,000,000,000)
输出格式
一行,一个整数N的因子个数。
输入/输出例子1
输入:
6
输出:
4
样例解释
提示
(说明:1、2、3、6共4个因子)
代码
#include<bits/stdc++.h>
using namespace std;
long long n,ans;
int main(){
cin>>n;
for(int i=1;i*i<=n;i++)
{
if(n%i==0)
{
ans++;
if(i*i!=n)
{
ans++;
}
}
}
cout<<ans;
return 0;
}
第4题 分解质因数
题目描述
请你把一个数分解质因数。
输入格式
一个整数n。(1<=n<=1000000)
输出格式
整数n分解质因数后的因子。从小到大排。
输入/输出例子1
输入:
12
输出:
2 2 3
样例解释
【输入样例2】
7
【输出样例2】
7
代码
#include <bits/stdc++.h>
void zs();
void zh();
bool z[20000001];
int a[20000001],n,p=2;
int main()
{
scanf("%d",&n);
zs();
zh();
while(1)
{
if(n%p==0)
{
printf("%d ",p);
n/=p;
}
else
{
p+=1;
continue;
}
if(z[n]==false)
{
printf("%d",n);
break;
}
if(n==1)
{
break;
}
}
return 0;
}
void zs()
{
z[0]=true;
z[1]=true;
for(int i=2;i<=20000000;i++)
{
if(z[i]==false)
{
for(int e=i*2;e<=20000000;e+=i)
{
z[e]=true;
}
}
}
}
void zh()
{
int bj=-1;
for(int i=0;i<20000000;i++)
{
if(z[i]==false)
{
bj+=1;
a[bj]=i;
}
}
}