|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include <stdio.h>
- #include <math.h>
-
- int main()
- {
- int n,i,m;
- long long a[10005],k;
-
- scanf("%d",&m);
-
- for(i=0;i<m;i++)
- {
- scanf("%lld",&a[i]);
- }
-
- for(i=0;i<m;i++)
- {
- int flag=0;
- k=(long long)sqrt((double)a[i]);
-
-
- for(n=2;n<=k;n++)
- {
- if (a[i]==2||a[i]==1)
- {
- flag=1;
- printf("No\n");
- }
-
- else if(a[i]%n==0)
- {
- flag=1;
- printf("No\n");
- break;
- }
- }
- if (flag==0)
- {
- printf("Prime\n");
- }
-
- }
-
- return 0;
- }
复制代码
为什么我输入2和1我总是输出素数,,明明我把他单独拿出来定义了啊
想不懂了已经
本帖最后由 桃花飞舞 于 2021-10-6 10:53 编辑
当输入2和1 时flag 的值为0,所以总是输出素数,你是把它单独拿出来定义了,只是当输入2和1时k的值总是小于2,这时不进入for循环更不会运行你单独定义的1和2这块。你可以这么改 - k=(long long)sqrt((double)a[i]);
-
-
- for(n=2;n<=k;n++)
- {
- if(a[i]%n==0)
- {
- flag=1;
- printf("No\n");
- break;
- }
- }
- if (a[i]==2||a[i]==1)
- {
- flag=1;
- printf("No\n");
- }
- if (flag==0)
- {
- printf("Prime\n");
- }
复制代码
|
|