#include <bits/stdc++.h>
using namespace std;
const int N=1e8+10;
bool s[N];
int prime[N/10],n,cnt=0;
void solve(int n){
s[0]=s[1]=0;
for(int i=2;i<=n;i++){
if(s[i]==0){
prime[++cnt]=i;
}
for(int j=1;j<=cnt&&i*prime[j]<=n;j++){
s[i*prime[j]]=1;
if(i%prime[j]==0){
break;
}
}
}
}
int main (){
cin >> n;
solve(n);
cout << cnt << endl;
return 0;
}
--------------------------------------------------------------------
#include<iostream>
#include<cstdio>
using namespace std;
const int maxn=5000000;
long prime[maxn];
bool is_prime[maxn+1];
int p = 0;
int sieve(int n){
p = 0;
for(int i=0;i<=n;i++)
is_prime[i]=true;
is_prime[0] = is_prime[1] = false;
for(int i=2;i<=n;i++){
if(is_prime[i])
{
prime[p++]=i;
for(int j=i*i;j<=n;j+=i)
is_prime[j]=false;
}
}
return p;
}
int main()
{
int n;
while(~scanf("%d",&n))
{
printf("质数个数是: %d\n",sieve(n));
printf("质数有:\n");
for (int i = 0; i<p; i++)
{
printf("%d ", prime[i]);
printf("\n\n");
}
}
return 0;
}
------------------------------------------------------------------------------------------------------------------
#include <iostream>
using namespace std;
int main(){
int n;
scanf("%d",&n);
printf("%d=",n);
for (int i = 2; i*i<= n; i++) {
while (n%i == 0){
printf("%d",i);
n /= i;
if (n != 1)
printf("*");
}
}
if(n>1){
cout << n ;
}
return 0;
}
----------------------------------------------------------------------------------------------------------------------
#include <iostream>
#include <algorithm>
#include <unordered_map>
#include <vector>
using namespace std;
typedef long long LL;
const int N = 110, mod = 1e9 + 7;
int main()
{
int n;
cin >> n;
unordered_map<int, int> primes;
while (n -- )
{
int x;
cin >> x;
for (int i = 2; i <= x / i; i ++ )
while (x % i == 0)
{
x /= i;
primes[i] ++ ;
}
if (x > 1) primes[x] ++ ;
}
LL res = 1;
for (auto p : primes) res = res * (p.second + 1) % mod;
cout << res << endl;
return 0;
}
------------------------------------------------------------------------------------------------------------------
#include <iostream>
#include <algorithm>
#include <unordered_map>
#include <vector>
using namespace std;
typedef long long LL;
const int N = 110, mod = 1e9 + 7;
int main()
{
int n;
cin >> n;
unordered_map<int, int> primes;
while (n -- )
{
int x;
cin >> x;
for (int i = 2; i <= x / i; i ++ )
while (x % i == 0)
{
x /= i;
primes[i] ++ ;
}
if (x > 1) primes[x] ++ ;
}
LL res = 1;
for (auto p : primes)
{
LL a = p.first, b = p.second;
LL t = 1;
while (b -- ) t = (t * a + 1) % mod;
res = res * t % mod;
}
cout << res << endl;
return 0;
}
——————————————————————————————————————————————————————————
减法
#include <iostream>
#include <string>
#include <cstring>
using namespace std;
int main(){
int i,j,flag=0;
string a_s,b_s;
int a[521]={0},b[521]={0},ans[521]={0};
cin>>a_s>>b_s;
int len_a=a_s.length(),len_b=b_s.length();
int len=len_a>len_b?len_a:len_b;
for(i=0;i<len_a;i++) a[i]=a_s[len_a-1-i]-'0';
for(i=0;i<len_b;i++) b[i]=b_s[len_b-1-i]-'0';
if(len_a>len_b||len_a==len_b&&a_s>=b_s){
for(i=0;i<len;i++){
if(a[i]<b[i]){
a[i+1]--;
a[i]+=10;
}
ans[i]=a[i]-b[i];
}
}
else{
flag=1;
for(i=0;i<len;i++){
if(b[i]<a[i]){
b[i+1]--;
b[i]+=10;
}
ans[i]=b[i]-a[i];
}
}
if(flag) cout<<"-";
while(ans[len]==0&&len>0) len--;
for(i=len;i>=0;i--){
cout<<ans[i];
}
}
--------------------------------------------------------
加法
#include <iostream>
#include <cstring>
using namespace std;
int main(){
int num1[520]={0},num2[520]={0},ans[520]={0};
int temp,i,j;
char num1c[520]={0},num2c[520]={0};
cin>>num1c>>num2c;
int len1=strlen(num1c);
int len2=strlen(num2c);
for(i=len1-1;i>=0;i--){
num1[len1-1-i]=num1c[i]-'0';
}
for(i=len2-1;i>=0;i--){
num2[len2-1-i]=num2c[i]-'0';
}
for(i=0;i<=520;i++){
ans[i]=num2[i]+num1[i]+temp;
temp=ans[i]/10;
ans[i]%=10;
}
len2++;
while(ans[len2]==0&&len2>0) len2--;
for(i=len2;i>=0;i--){
cout<<ans[i];
}
}
------------------------------------------------------
#include <iostream>
using namespace std;
int main(){
string a_s,b_s;
int a[521]={0},b[521]={0},ans[521*2]={0};
int len_a,len_b,len,carry=0,i,j;
cin>>a_s>>b_s;
len_a=a_s.length();
len_b=b_s.length();
for(i=0;i<len_a;i++) a[i]=a_s[len_a-1-i]-'0';
for(i=0;i<len_b;i++) b[i]=b_s[len_b-1-i]-'0';
for(i=0;i<len_b;i++){
for(j=0;j<len_a||carry!=0;j++){
ans[i+j]+=a[j]*b[i]+carry;
carry=ans[i+j]/10;
ans[i+j]%=10;
}
}
len=i+j;
while(ans[len]==0&&len>0) len--;
for(i=len;i>=0;i--){
cout<<ans[i];
}
}
------------------------------------------------------
chufa
#include <iostream>
#include <string>
using namespace std;
bool judge(int* a,int* b,int len){
if(a[len]>0) return true;
for(int i=len-1;i>=0;i--){
if(a[i]>b[i]) return true;
else if(a[i]<b[i]) return false;
}
return true;
}
int main(){
string a_s,b_s;
int a[521]={0},b[521]={0},ans[521]={0};
int i,j,len_a,len_b,len;
cin>>a_s>>b_s;
if(b_s=="0"){
cout<<"除数不能为0"<<endl;
return 0;
}
len_a=a_s.length();
len_b=b_s.length();
len=len_a-len_b;
for(i=0;i<len_a;i++) a[i]=a_s[len_a-1-i]-'0';
for(i=0;i<len_b;i++) b[i]=b_s[len_b-1-i]-'0';
for(i=len_a-len_b;i>=0;i--){
while(judge(a+i,b,len_b)){
ans[i]++;
for(j=0;j<=len_b-1;j++){
if(a[i+j]<b[j]){
a[i+j+1]--;
a[i+j]+=10;
}
a[i+j]-=b[j];
}
}
}
while(a[len_a]==0&&len_a>0) len_a--;
while(ans[len]==0&&len>0) len--;
for(i=len;i>=0;i--) cout<<ans[i];
if(len<0) cout<<"0";
if(len_a>1||a[0]>0){
cout<<"余";
for(i=len_a;i>=0;i--) cout<<a[i];
}
}