因数和
给你一个整数N,求它的所有因数的和。比如N=12,和为1+2+3+4+6+12=28。
输入格式
只一行,一个整数N。(1≦N≦1,000,000)
输出格式
只一行,一个整数N。
输入/输出例子1
输入:
12
输出:
28
cpp
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,s=0;
cin>>n;
for(int i=1;i<=n;i++){
if(n%i==0)s+=i;
}
cout<<s;
return 0;
}
因子个数
桐桐做完数学作业,闲来无事,她发现整数n的因子很有趣,好像还存在一些规律。她想把给定的整数n的因子个数计算出来,聪明的你能帮助她吗?
输入格式
一行,一个整数 N(1<= N <= 2,000,000,000)
输出格式
一行,一个整数N的因子个数。
输入/输出例子1
输入:
6
输出:
4
样例解释
提示
(说明:1、2、3、6共4个因子)
cpp
#include<bits/stdc++.h>
using namespace std;
long long n,z=0;
int main(){
cin>>n;
for(int i=1;i<=sqrt(n);i++){
if(n%i==0)z+=2;
if(i*i==n)z--;
}
cout<<z;
return 0;
}
狱警的游戏
在一个牢狱里,关了N个犯人,当然每个犯人带着一个手铐[不然他就会......].一天晚上,狱警觉得不好玩想来玩一个游戏,第一轮他将所有的犯人的手铐都打开,在第二轮将所有犯人号码为2的倍数的手铐又扣上,在第三轮将所有犯人号码为3的倍数的手铐做一次反处理,即如果他的手铐是打开的那么就扣上,如果是扣上的就把它又打开。如此这样进行下去。直到第N轮,游戏结束之后他长长的喝了一只威士忌后扬长而去,当然这时那些手铐被打开的犯人自然可以轻松的夺路而逃了。现在的问题就是:请你确定一下最后有多少个犯人能逃出牢狱?
输入格式
输入一个正整数N, 范围在[2,1000000000]。
输出格式
一整数,有多少犯人能逃出牢狱。
输入/输出例子1
输入:
10
输出:
3
样例解释
编号1、4、9的犯人逃走了。
cpp
#include<bits/stdc++.h>
using namespace std;
long long n;
int main(){
cin>>n;
cout<<int(sqrt(n));
return 0;
}
质数判断
输入两个正整数a ,b ,请判断a+b和a*b是否为质数,是就输出"YES",否就输出"NO"。
输入格式
一行两个正整数 a , b ,1<=a,b<=1000。
输出格式
两行,每行一个字符串,YES/NO,分别表示a+b和a*b是否为质数。
输入/输出例子1
输入:
2 3
输出:
YES
NO
cpp
#include<bits/stdc++.h>
using namespace std;
int main(){
int a,b;
cin>>a>>b;
int s=a+b;
int x=a*b;
bool f=1;
for(int i=2;i<s;i++){
if(s%i==0){
f=0;
break;
}
}
if(f==1)cout<<"YES"<<endl;
else cout<<"NO"<<endl;
bool h=1;
for(int i=2;i<x;i++){
if(x%i==0){
h=0;
break;
}
}
if(h==1)cout<<"YES"<<endl;
else cout<<"NO"<<endl;
return 0;
}
区间内的质数
给出两个整数a和b,输出a至b范围内的所有质数。
输入格式
第一行,两个整数a和b。1<=a<=b<=1000
输出格式
共1行,若干个整数,空格分开。
输入/输出例子1
输入:
4 15
输出:
5 7 11 13
cpp
#include<bits/stdc++.h>
using namespace std;
bool f=1;
int a,b;
int main(){
cin>>a>>b;
for(int i=a;i<=b;i++){
f=1;
if(i!=1){for(int j=2;j<i;j++){
if(i%j==0){
f=0;
break;
}
}
if(f==1)cout<<i<<" ";}
}
return 0;
}
判断质数 查看测评数据信息
给你一个整数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
cpp
#include<bits/stdc++.h>
using namespace std;
bool f(long long num){
if(num<=1)return 0;
for(long long i=2;i*i<=num;i++)
if(num%i==0)
return 0;
return 1;
}
long long g,a;
int main(){
cin>>g;
for(long long i=0;i<g;i++){
cin>>a;
if(f(a))cout<<"0"<<endl;
else cout<<"1"<<endl;
}
return 0;
}
末尾为m的素数
质数的定义:一个大于1的自然数,除了1和它本身外没有其他的约数。求出n以内,末位数为m的所有质数。如果没有质数的话,输出-1。
输入格式
输入两个数n,m。(2<=n<=10000,1<=m<=9)
输出格式
n以内末位数为m的所有质数
输入/输出例子1
输入:
100 7
输出:
7 17 37 47 67 97
cpp
#include<bits/stdc++.h>
using namespace std;
bool f=1;
long long a,b,s=0;
int main(){
cin>>a>>b;
for(int i=2;i<=a;i++){
f=1;
if(i%10==b){
for(int j=2;j<i;j++){
if(i%j==0){
f=0;
break;
}
}
if(f==1){
cout<<i<<" ";
s++;
}
}
}
if(s==0)cout<<"-1";
return 0;
}
因数和2 查看测评数据信息
给你一个整数N,求它的所有因数的和。比如N=12,和为1+2+3+4+6+12=28。
输入格式
只一行,一个整数N。(1≦N≦2,000,000,000)
输出格式
只一行,一个整数:N的所有因数之和。
输入/输出例子1
输入:
12
输出:
28
cpp
#include<bits/stdc++.h>
using namespace std;
long long n,z=0;
int main(){
cin>>n;
for(int i=1;i<=sqrt(n);i++){
if(n%i==0)z=z+i+n/i;
if(i*i==n)z=z+i;
}
cout<<z;
return 0;
}
分解质因数
请你把一个数分解质因数。
输入格式
一个整数n。(2<=n<=1000000)
输出格式
整数n分解质因数后的因子。从小到大排。
输入/输出例子1
输入:
12
输出:
2 2 3
输入/输出例子2
输入:
7
输出:
7
cpp
#include<bits/stdc++.h>
using namespace std;
int main(){
int num;
cin>>num;
for(int i=2;i<=num;i++){
while(num%i==0){
cout<<i;
num/=i;
if(num!=1)cout<<" ";
}
}
return 0;
}