1 条题解
-
-1
这是一道非常简单的质数判断问题,遍历数字时要从小到大,否则就会溢出或超时
#include<iostream> #include<cmath> using namespace std; int n; bool check(int); int main() { cin>>n; for(int i=2;i<=n-1;i++) { if((check(i)==true)&&(n%i==0)) { cout<<n/i; break; } } return 0; } bool check(int x) { for(int i=2;i<=sqrt(x);i++) { if(x%i==0) return false; } return true; }
下面附上一种花里胡哨的做法(只能得90)
#include<iostream> using namespace std; int a[90000001]; int top=0; void zs(int,int); int main() { int n; cin>>n; zs(2,n); cout<<a[top]; return 0; } void zs(int p,int x) { if(x==1) { return; } else { if(x%p==0) { while(x%p==0) { if(p!=a[top]) a[++top]=p; x/=p; if(x==1) break; } zs(p+1,x); } else zs(p+1,x); } }
信息
- ID
- 197
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 7
- 标签
- 递交数
- 89
- 已通过
- 22
- 上传者