为什么这样打高精度不对?

#include<stdio.h>
#include<iostream>
#include<math.h>
int a[1001]={0};
using namespace std;
int w=0;
int ans=0;
int gjd(int x,int l){
int tol=0;
for(int i=0;i<=w;i++){
int n=a[i]*x+tol;
tol=n/10;
a[i]=n%10;
}
if(tol>0) a[w+1]=tol;
w++;
return 0;
}
int judge(int x){
for(int i=2;i<=sqrt(ans);i++)
if(x%i==0) return false;
return true;
}
int main(){
int n;
cin>>n;
a[0]=1;
for(int i=2;i<=n;i++) gjd(i,w);
for(int i=0;i<=w;i++) ans+=a[i];

cout<<ans;
if(judge(ans)&&ans!=1) cout<<"T";
else cout<<"F";
return 0;
}

0 条评论

目前还没有评论...

信息

ID
1200
难度
4
分类
数论 | 素数判定 点击显示
标签
(无)
递交数
3393
已通过
1348
通过率
40%
被复制
12
上传者