素数专题
1007.素数对的猜想
让我们定义dn为: ,其中pi是第i个素数。显然有d1=1,且对于n>1有dn是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。
现给定任意正整数
N
(<105),请计算不超过N
的满足猜想的素数对的个数。输入格式:
输入在一行给出正整数
N
。输出格式:
在一行中输出不超过
N
的满足猜想的素数对的个数。
import math
def prime(num):
for i in range(3, int(math.sqrt(num)) + 1, 2):
if num % i == 0:
return False
return True
primeList = [2]
n = int(input())
for i in range(3, n + 1, 2):
if prime(i) is True:
primeList.append(i)
count = 0
for i in range(len(primeList) - 1):
if primeList[i + 1] - primeList[i] == 2:
count += 1
print(count)
1013.数素数
令 Pi 表示第 i 个素数。现任给两个正整数 M≤N≤104,请输出 PM 到 PN 的所有素数。
输入格式:
输入在一行中给出 M 和 N,其间以空格分隔。
输出格式:
输出从 PM 到 PN 的所有素数,每 10 个数字占 1 行,其间以空格分隔,但行末不得有多余空格。
#include<iostream>
#include<cmath>
using namespace std;
int is_prime(int n){
if(n==1) return 0;
for(int i=2;i<=sqrt(n);++i){
if(n%i==0) return 0;
}
return 1;
}
int main()
{
int m,n,a=0; //用a来记录是第几个素数了
cin >> m>>n;
int first=2,count=0; // first来一次判断是不是素数,count来记录输出了几个素数了。
while(a<n){
if(is_prime(first)){
a++;
if(a>=m){
cout << first;
count++;
if(count%10==0) cout <<endl;
else if(a!=n) cout<<" ";
}
}
first++;
}
return 0;
}
质因子分解
Among all the factors of a positive integer N, there may exist several consecutive numbers. For example, 630 can be factored as 3×5×6×7, where 5, 6, and 7 are the three consecutive numbers. Now given any positive N, you are supposed to find the maximum number of consecutive factors, and list the smallest sequence of the consecutive factors.
Input Specification:
Each input file contains one test case, which gives the integer N (1<N<231).
Output Specification:
For each test case, print in the first line the maximum number of consecutive factors. Then in the second line, print the smallest sequence of the consecutive factors in the format
factor[1]*factor[2]*...*factor[k]
, where the factors are listed in increasing order, and 1 is NOT included.
大整数计算
本题要求计算 A/B,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数。你需要输出商数 Q 和余数 R,使得 A=B×Q+R 成立。
输入格式:
输入在一行中依次给出 A 和 B,中间以 1 空格分隔。
输出格式:
在一行中依次输出 Q 和 R,中间以 1 空格分隔。
直接没有用大整数思想
n, m = map(int, input().split())
x, y = divmod(n, m)
print(x, y)