C编程语言中的素数在1到100之间

时间:2017-01-03 13:30:05

标签: c loops for-loop

我想打印介于1到100之间的素数,我写下我的代码,但是当我运行它时,它开始打印3,7,11,17 .... 91 为什么不打印代码2? 请帮帮我朋友

#include <stdio.h>
int main(void)
{
    for(int i=2;i<100;i++)
    {
        for(int j=2;j<i;j++)
        {
            if(i%j==0)
                break;
            else if(i==j+1)
                printf("%d\n",i);
        }
    }
}

5 个答案:

答案 0 :(得分:6)

条件i==j+1不适用于i==2。这可以通过对内循环的一些更改来解决:

#include <stdio.h>
int main(void)
{
 for (int i=2; i<100; i++)
 {
  for (int j=2; j<=i; j++)   // Changed upper bound
  {
    if (i == j)  // Changed condition and reversed order of if:s
      printf("%d\n",i);
    else if (i%j == 0)
      break;
  }
 }
}

答案 1 :(得分:2)

public class MyActivity extends AppCompatActivity {
    private RealmResults<Word> words;
    private Realm realm;
    private WordAdapter wordAdapter;

    @BindView(R.id.recycler_view) 
    RecyclerView recyclerView;

    @Override
    public void onCreate(Bundle bundle) {
        super.onCreate(bundle);
        setContentView(R.layout.my_activity);
        ButterKnife.bind(this);
        realm = Realm.getDefaultInstance();
        words_for_ssc = ...
        RealmQuery<Word> query = realm.where(Word.class);
        String[] array = words_for_ssc[Integer.parseInt(params[0])];
        for (int i = 0; i < array.length; i++) {
            query = query.equalTo("word", array[i]);
            if (i != array.length - 1) {
                query = query.or();
            }
        }
        words = query.findAllSortedAsync("word");
        wordAdapter = new WordAdapter(words);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
        recyclerView.setAdapter(wordAdapter);
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        realm.close();
        realm = null;
    }
}

public class WordAdapter extends RealmRecyclerViewAdapter<Word, WordViewHolder> {
    public class WordAdapter(OrderedRealmCollection<Word> words) {
        super(words, true);
    }

    @Override
    public WordViewHolder onCreateViewHolder(...) {
        ...
    }

    @Override
    public void onBindViewHolder(WordViewHolder holder, int position) {
        holder.bind(getData().get(position));
    }

    public static class WordViewHolder extends RecyclerView.ViewHolder {
        public WordViewHolder(View view) {
            super(view);
            ButterKnife.bind(this, view);
        }

        public void bind(Word word) {
            ...
        }
    }
}

答案 2 :(得分:1)

#include <stdio.h>
#include <conio.h>
int main()
{
    int i,j;
    int b=0;
    for (i=2;i<=100;i++){
        for (j=2;j<=i;j++){
            if (i%j==0){
                break;
            }
        }
        if (i==j)
            print f("\n%d",j);
    }
    getch ();
}

答案 3 :(得分:1)

#include<stdio.h>
int main()
{
    int a,b,i,c,j;
    printf("\n Enter the two no. in between you want to check:");
    scanf("%d%d",&a,&c);
    printf("%d-%d\n",a,c);
    for(j=a;j<=c;j++)
    {
        b=0;
        for(i=1;i<=c;i++)
        {
            if(j%i==0)
            {
                 b++;
            }
        }
        if(b==2)
        {
            printf("\nPrime number:%d\n",j);
        }
        else
        {
            printf("\n\tNot prime:%d\n",j);
        }
    }
}

答案 4 :(得分:0)

#include<stdio.h>
main()
{
    int i,j,k;
    for(i=2;i<=100;i++)
    {
        k=0;
        for(j=2;j<=i;j++)
        {
            if(i%j==0)
            k++;
        }
        if(k==1)
        printf("%d\t",i);
    }
}
相关问题