|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
我的思路是先求出和数的数量,然后再是再用总数减去和数的数量,但是在和数的统计中总是少了四是什么情况,求大神帮忙
- #include <stdio.h>
- #define EN 10000
- int main()
- {
- int i,j,count,temp;
- count=0;
- temp=0;
- int ch;
- for(i=0;i<EN;i++)
- {
- if(i<2)
- {
- continue;
- }
- else
- {
- for(j=2;j<(i+1)/2;j++)
- {
- if(i%j==0)
- {
- temp=1;
- printf("%d\n",i);
- break;
-
- }
- }
- if(temp==1)
- {
- count++;
- }
- temp=0;
- }
-
- }
- ch=EN-count-2;
- printf("10000以内共有%d个素数\n",ch);
-
- }
复制代码
本帖最后由 jackz007 于 2021-12-21 15:13 编辑
当 i = 4 时,(i + 1) / 2 = 2 , 而 j 的初值为 2,j < (i+1) / 2 的循环条件不成立。
不要去趟 10 以内素数的浑水,即便是按照你的思路,代码也应该这样写:
- #include <stdio.h>
- #define EN 10000
- int main(void)
- {
- int i , j , count ;
- for(count = 6 , i = 11 ; i < EN ; i ++) {
- for(j = 2 ; j * j < i + 1 ; j ++) {
- if((i % j) == 0) {
- count ++ ;
- break ;
- }
- }
- }
- printf("%d 以内共有 %d 个素数\n" , EN , EN - 1 - count) ;
- }
复制代码
|
|